public static int StringInString(String one, String two) {
if (one==null||two==null||one.equals("")||two.equals("")){
return 0;
}
else{
int x=one.length(),y=two.length(),sum=0,i=0,j=0;
char[] onee=one.toCharArray();
char[] twoo=two.toCharArray();
while(i<x){
while(j<y){
if (onee[i]==twoo[j]){
i++;
j++;
}
else{
if (j==0){
i++;
}
else{
j=0;
i++;
}
}
}
sum++;
i=i-y+1;
j=0;
}
return sum;
}
}
public static void main(String[] args){
int sum;
sum = StringInString("salamsal","sal");
System.out.println(sum);
}
привет, я не знаю, почему возникла эта ОШИБКА ?! пожалуйста, помогите мне; этот код хочет подсчитать похожий текст в двух строкахa и результат этого кода должен быть = 2.
спасибо за внимание и помощь
Вам нужно сделать это так? Есть более простой способ.




Когда вы находитесь внутри второго цикла while, даже если i> x, цикл продолжается до тех пор, пока j <y. Поэтому, когда случается, что i ++ во втором цикле заставляет i стать больше x-1, а j все еще меньше y, в первом «if» (всегда внутри второго цикла while) программа проверяет, если onee [8] = = twoo [0], и поскольку onee [8] не существует (поскольку индексы "salamsal" идут от 0 до 7), это показывает ошибку, что индекс выходит за пределы массива. Чтобы устранить ошибку, вы должны проверить значение i внутри второго цикла, потому что может случиться так, что i ++ сделает этот индекс больше, чем x-1, где x, как вы заявили, является длиной первой строки.
Отладка должна указывать вам правильное направление, а не размещать здесь код.