Я попытался написать фрагмент 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;
}
Почему именно инициализация переменной Index в условии цикла while работает, а не инициализация ее перед циклом while, как в первом методе?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... other-stri