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);
}
你好我不知道为什么这个ERROR apear?!请帮我; 这段代码想要计算两个stringsa中的相似文本 并且此代码的结果应为= 2。
答案 0 :(得分:0)
当你进入第二个&#34;而#34;循环,即使我&gt; x,只要j <1,循环就会继续。年。因此,当第二个循环中的i ++发生i变得大于x-1,并且j仍然小于y时,在第一个循环中,#34; if&#34; (总是在第二个循环中)程序测试是否[8] == twoo [0],因为onee [8]不存在(因为&#34; salamsal&#34;的索引来自0到7)它显示索引超出数组边界的错误。要解决这个错误,你应该在第二个周期内检查i的值,因为可能会发生i ++使得这个索引变得大于x-1,其中x就像你声明的那样,是第一个字符串的长度。