I don't understand why I cannot assign values to the elements of an array using the enhanced for loop. For example, using for loop like that
int[] array = new int[5];
for(int i = 0; i < 5; i++)
array[i] = 10;
produces what I want. But why does that not work with "for each":
for(int element : array)
element = 10;
Is there any specific reason why that is the case or am I doing something wrong?
In the enhanced for loop element is a local variable containing a reference (or value in case of primitives) to the current element of the array or Iterable you are iterating over.
Assigning to it doesn't affect the array / Iterable.
It's equivalent to :
int[] array = new int[5];
for(int i = 0; i < 5; i++) {
int element = array[i];
element = 10;
}
Which also won't modify the array.
If you need to modify the array, use should use a regular for loop.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With