提问人:Prajakta Yadav 提问时间:11/25/2021 最后编辑:Prajakta Yadav 更新时间:11/25/2021 访问量:78
ArrayIndexOutOfBound 错误,当我使用增强的 for 循环 [duplicate]
ArrayIndexOutOfBound error when i used enhanced for loop [duplicate]
问:
我们是否可以在不出现 ArrayIndexOutOfBound 错误的情况下使用 enhanced for 循环。 因为在使用 normal for 循环后,它正在工作。
public static void main(String[] args) {
int a[] = {1,2,3,4};
int b[] = {1,2,3,4};
boolean status = true;
if (a.length == b.length){
for (int i:a){
if (a[i] != b[i]){
status =false;
}
}
}
else {
status = false;
}
if (status == true){
System.out.println("arrays are equal...");
}
else {
System.out.println("arrays not equal...");
}
}
}
答:
1赞
jmizv
11/25/2021
#1
那是因为您正在访问数组的元素。a
循环
for (int i : a) {
System.out.println(i);
}
将打印出以下值:1、2、3、4。
您可能期望得到 0、1、2、3,但这不是增强循环的工作方式。
起色
与其手动比较两个数组,不如使用方便的方法:Arrays.equals()
public static void main(String[] args) {
int a[] = {1,2,3,4};
int b[] = {1,2,3,4};
boolean status = java.util.Arrays.equals(a, b);
if (status){
System.out.println("arrays are equal...");
} else {
System.out.println("arrays not equal...");
}
}
评论
1赞
GhostCat
11/25/2021
我认为您也应该建议如何手动实际比较数组。处于学习阶段的人应该首先自己编写解决方案,然后你告诉他们:在现实世界中,使用这个库调用。
0赞
Prajakta Yadav
11/25/2021
if (a.length == b.length){ for (int i:a){ if (a[i-1] != b[i-1]){ status =false;
0赞
jmizv
11/25/2021
@Prajakta Yadav 中,这之所以有效,是因为您的数组具有以下值:1,2,3,4。尝试使用像 or 这样的数组,它将不再起作用。{1,2,3,5}
{1,2,4}
1赞
Metin Bulak
11/25/2021
#2
for (int i:a) // 你在这里弄错了,i 等于 1,2,3,4 数组索引必须以 0 开头
public static void main(String[] args) {
int a[] = {1,2,3,4};
int b[] = {1,2,3,4};
boolean status = true;
if (a.length == b.length){
for (int i=0; i<a.length; i++){ // look at here
if (a[i] != b[i]){
status =false;
}
}
}
else {
status = false;
}
if (status == true){
System.out.println("arrays are equal...");
}
else {
System.out.println("arrays not equal...");
}
}
}
评论
Arrays.equals
for (int i:a)