我正在尝试使用增强功能将数组中的元素相加 for循环。如果我使用正常的for循环,它可以工作。但是,当我 使用增强的for循环,它会抛出IndexOutOfBounds异常 而且我不确定为什么会这样?
int[ ] array = {1,2,3};
int total = 0;
for(int counter : array) {
total = total + array[counter];
}
System.out.println(total);
答案 0 :(得分:6)
counter
不是索引,它是元素。您需要将counter
添加到total
。
如果您使用的是Java 8,则可以将其简化为:
int[ ] array = {1,2,3};
System.out.println(Arrays.stream(array).sum());
如果你还想在没有溪流的情况下这样做:
int[ ] array = {1,2,3};
int total = 0;
for(int counter : array) {
total = total + counter;
}
System.out.println(total);
答案 1 :(得分:3)
正如Aniket previoysly所说,反制不是指数。
您的代码是此代码的缩写版本:
for (int i = 0; i<array.size; i++){
counter = array[i];
total = total + counter;
}
如您所见,counter成为array [i]的元素,i是数组的索引。
如果您想使用您的代码版本跟踪索引,则必须创建一个名为i = 0的外部变量,并在每次重复时将其递增一次。
int i = 0
for (counter : array){
i++;
counter = array[i];
total = total + counter;
}