这个java.lang.ArrayIndexOutOfBoundsException错误

时间:2018-03-31 11:49:30

标签: java error-handling compiler-errors

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。

1 个答案:

答案 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就像你声明的那样,是第一个字符串的长度。