我希望我也可以提出问题,而不是真正有错误,需要修复它们。
我收到了以下代码:
public boolean equals(NaturalNumberTuple givenTuple) {
int count = 0;
if(tuple.length == givenTuple.getLength()){
for(int i = 0; i < tuple.length; i++){
if(this.tuple[i] == givenTuple.tuple[i]){
count++;
}
}
if(count == tuple.length){
return true;
}
}
return false;
}
因为你可以看到我使用普通的for循环,但我知道我可以使用一个所谓的foreach循环
for(int i : tuple){...}
但如果我尝试使用它,我会收到错误&#34; ArrayIndexOutOfBoundsException&#34;如果我尝试检查两个Arrays是否相等。
有人可以解释一下为什么我不能在这里使用foreach循环吗?
答案 0 :(得分:3)
我唯一的赌注就是你写道:
for(int i : tuple){
if(this.tuple[i] == givenTuple.tuple[i]){
count++;
}
}
在for-each循环中,i
获取数组中元素的值。这不是指数。假设你有:
int[] arr = {1, 4, -2};
i
将取值1,4和-2,而不是0,1,2。
当您需要索引来访问givenTuple.tuple[i]
时,我认为您可以坚持使用传统循环,或使用Arrays.equals
(这将是一个单行)。
哦还要注意public boolean equals(NaturalNumberTuple givenTuple)
不是equals
方法的覆盖(可以给你带来意想不到的惊喜)