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)
答案 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]) ){