Невозможно присвоить значения фактическому массиву, который вы используете, в расширенном для каждого цикла. Это связано с тем, что расширенный цикл for-each не дает вам доступа к указателям массива.Для того, чтобы изменить значения массива, вы должны буквально сказать:
a[i] = anything
Вы можете, однако, использовать усиленный для петли, чтобы назначить значения другого массива, как так:
int[] nums = new int[4];
int[] setNums = {0,1,2,3};
i = 0;
for(int e: setNums) {
nums[i++] = e*2;
}
Enhanced для -loops в Java просто предлагают немного синтаксического сахара, чтобы получить значения массива или списка. В некотором смысле они работают аналогично передаче объектов методу - исходный объект, переданный методу, не может быть повторно назначен в методе. Например:
int i = 1;
void multiplyAndPrint(int p) {
p = p*2;
System.out.println(p);
}
System.out.println(i);
Напечатает 2, а затем 1. Это тот же вопрос, вы будете работать в попытке присвоить значения из-за каждый цикл.
Вы не можете получить доступ к индексам, используя * для каждого * цикла. Вместо этого используйте первый. – Maroun