增强的For循环不会在数组中添加元素

时间:2018-03-27 02:14:51

标签: java java-8

我正在尝试使用增强功能将数组中的元素相加 for循环。如果我使用正常的for循环,它可以工作。但是,当我 使用增强的for循环,它会抛出IndexOutOfBounds异常 而且我不确定为什么会这样?

int[ ] array = {1,2,3};
int total = 0; 
for(int counter : array) {
    total = total + array[counter];
}
System.out.println(total);

2 个答案:

答案 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;
 }