gpt4 book ai didi

java - 为什么我必须使用 for 循环而不是 foreach 循环?

转载 作者:行者123 更新时间:2023-12-01 22:33:37 24 4
gpt4 key购买 nike

我希望我也能提出问题,而不是真的有错误并需要修复它们。

我得到了以下代码:

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){...}

但是如果我尝试使用它,如果我尝试检查两个数组是否相等,则会收到错误“ArrayIndexOutOfBoundsException”。

有人可以解释一下为什么我不能在这里使用 foreach 循环吗?

最佳答案

我唯一的赌注是你写道:

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],我认为您可以坚持使用传统的for循环,或者使用Arrays.equals(这将成为一句单行话)。

哦,还要注意 public boolean equals(NaturalNumberTuple GiveTuple) 并不是 equals 方法的重写(这可能会给您带来意想不到的惊喜)

关于java - 为什么我必须使用 for 循环而不是 foreach 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com