我尝试编写一段Java代码来检查另一个字符串中是否多次出现某个子字符串,因此如果某个子字符串在一个字符串中出现多次,该方法应该返回true,否则应该返回false 。当子字符串根本不存在于字符串中时,它工作得很好,但当子字符串存在但没有出现多次(这是不应该发生的)时,它返回 true。方法如下:
public boolean twoOccurrencesMethod(String a, String b){
int fromIndex = 0;
int count = 0;
int Index = b.indexOf(a, fromIndex);
while((Index) != -1){
count++;
fromIndex = Index + 1;
if (count > 1){
return true;
}
}
return false;
}
当子字符串在字符串中出现多次时,我希望该方法返回 false。 但经过一些修改,我得到了下面的方法,效果非常好。
public boolean twoOccurrencesMethod(String a, String b){
int fromIndex = 0;
int count = 0;
int Index;
while((Index = b.indexOf(a, fromIndex)) != -1){
count++;
fromIndex = Index + 1;
if (count > 1){
return true;
}
}
return false;
}
为什么在 while 循环的条件下初始化 Index 变量会起作用,而不是像第一种方法那样在 while 循环之前初始化它?