Keine Array Modifizierung mit ForEach-Schleife
Willkommen › Foren › Programmier-Kurs › Keine Array Modifizierung mit ForEach-Schleife
- Dieses Thema ist leer.
-
AutorBeiträge
-
Marvin
GastHi,
ich habe gerade das P6 Tutorial (2. Video) angeschaut und dann beim Reproduzieren (Aufgabe 6.2) gemerkt, dass man mit der ForEach-Schleife keine Werte in den Array schreiben kann.
Mache ich hier etwas falsch oder geht das wirklich einfach nicht?
Hier mein Code:
// Erzeugen eines neuen Arrays mit Länge 10.
int [] zufallsArray = new int[10];// Zufallszahl in jede Position des Arrays schreiben:
for(int element : zufallsArray){
element = (int) (100 * Math.random()) + 1;
System.out.println(element); // Hier wird nur der jeweilige Wert für "element" ausgegeben, jedoch ist das keine Bestätigung für einen erfolgreich modifizierten Array-Wert.
}//Ausgabe aller Werte des Arrays:
for(int element : zufallsArray){
System.out.println(element);
} // Hier werden dann nur noch Nullen ausgegeben. Das lässt mich daraus schließen, dass die gewollte Modifizierung zuvor nicht erfolgreich war. Nutze ich zuvor die For-Schleife mit Zählvariable, werden hiermit die Zufallswerte ausgegeben.
LG,
MarvinBolli
GastHi Marvin,
du hast hier nichts falsch gemacht, das ist eine Limitierung von Java als Programmiersprache. Hier kannst du keine einfachen (primitiven) Werte wie int, double, char, boolean in einer ForEach-Schleife modifizieren, sondern musst eine einfache For-Schleife verwenden.
In anderen Programmiersprachen funktioniert das besser, z.B. mit Pointern oder Enumerate.
Viele Grüße
BolliDominik
GastHi Marvin,
ich führe nochmal ein bisschen aus 🙂
Es gibt in Java grundsätzlich zwei Wege, über alle Elemente in einem Array zu iterieren.
Definieren wir unsmal ein Array:
int[] myArray = {1, 1, 2, 3, 5, 8, 13, 21, 34};
Wenn du auf das Array selbst nicht zugreifen musst, sondern dich nur die Elemente interessieren, dann kannst du die sog. for-each-Schleife benutzen.
Du kannst dann allerdings nur auf die Elemente selbst zugreifen, erhältst aber keine Zählvariable. Das ganze sieht dann so aus:
for (int number : myArray) {
System.out.println(number);
// ich kann hier nur auf 'number' zugreifen, weiß aber nicht, an welchem Index diese Zahl steht.
}
Ausgabe:
1
1
2
3
5
8
13
21
34
Wenn du das Array ändern willst, musst du natürlich auf bestimmte Elemente de Arrays zugreifen können. Dafür brauchst du den Index.
Da gibt es zwei Möglichkeiten:1.: Du definierst dir manuell eine Zählvariable:
int counter = 0;
for (int number : myArray) {
System.out.println(counter + ": " + number);
myArray[counter] = 0; // Zugriff auf das Array
counter++;
}
2.: Du benutzt eine Schleife mit Zählvariante:
for (int i = 0; i < array.length; i++) {
System.out.println(counter + ": " + number);
myArray[i] = 0; // Zugriff auf das Array
}
Üblicherweise benutzt man die zweite Variante, weil sie lesbarer ist.
LG
Dominik -
AutorBeiträge