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