Я пытаюсь добавить элементы в массив с помощью расширенного для цикла. Если я сделаю это с помощью обычного цикла for, это сработает. Но когда я используя расширенный цикл for, он выдает исключение IndexOutOfBounds и я не уверен, почему это происходит?
int[ ] array = {1,2,3};
int total = 0;
for(int counter : array) {
total = total + array[counter];
}
System.out.println(total);
это сработало, спасибо!




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);
Как ранее сказал Аникет, счетчик - это не показатель.
Ваш код - это более короткая версия этого кода:
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;
}
total = total + counter; вы должны использоватьarray[i]только при использовании стиля цикла for (i = 0; i <array.length; i ++)