我无法找出这里的错误是什么?

时间:2016-01-15 04:15:32

标签: java

public class JavaApplication1 {

public static void main(String[] args) {
    int[] tab1 = {12,134,21,23};
    int[] tab2 = {12,134,21,23};
    if(tab1 == null || tab2 == null || tab1.length != tab2.length){
        System.out.println("Differents");
    } else {
        int i = 0;
        while((tab1[i] == tab2[i]) && (i < tab1.length)){
            ++i;
        }

        if(i>= tab1.length){
            System.out.println("Equals");
        }else{
            System.out.println("Differents");
        }
    }

}

}

错误信息是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at javaapplication1.JavaApplication1.main(JavaApplication1.java:14)
C:\Users\Rachid\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53:    Java returned: 1
BUILD FAILED (total time: 0 seconds)

5 个答案:

答案 0 :(得分:2)

将循环条件更改为(tab1[i] == tab2[i])。当i等于数组的长度时,将不会评估{{1}}。{/ p>

答案 1 :(得分:1)

问题是您收到i异常,因为您正在递增变量i而不检查它是否超过了数组的最大索引。然后你引用不存在的数组元素if(i + 1 > tab1.length) break; ,因此抛出异常。我会在你的循环中添加以下行。

$('textarea[name=descript]').html("<?php echo $remarks; ?>");

答案 2 :(得分:1)

错误,因为你的if语句障碍:

while((tab1[i] == tab2[i]) && (i < tab1.length)){
        ++i;
}

你应该先判断i<tab1.length,如下:

while(i < tab1.length && tab1[i] == tab2[i]){
        ++i;
}

答案 3 :(得分:1)

错误发生在第(tab1[i] == tab2[i])行。在java中,数组索引从0开始。 如上面的代码:

tab1[0] = 12;
    tab1[1] = 134;
    tab1[2] = 21;
    tab1[3] = 23;

tab1.length = 4 =&gt;时i=4 (tab1[4] == tab2[4]) =&gt; ArrayIndexOutOfBoundsException异常

答案 4 :(得分:0)

按照以下方式对此行while((tab1[i] == tab2[i]) && (i < tab1.length) ){进行协调:

 while((i < tab1.length) &&(tab1[i] == tab2[i]) ){