这个java.lang.ArrayIndexOutOfBoundsException错误

问题描述 投票:-2回答:1
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。

java error-handling compiler-errors
1个回答
0
投票

当你进入第二个“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就像你声明的那样,是第一个字符串的长度。

© www.soinside.com 2019 - 2024. All rights reserved.