Inhaltsverzeichnis
Wiederholungsschleifen
1. Die while- Schleife
Syntax:
while(Bedingung){ Sequenz }
Die Sequenz wird so lange wiederholt, solange die Bedingung wahr ist. Das kann 100 Mal, unendlich oft oder kein Mal sein.
Nach jedem Schleifendurchlauf wird die Bedingung erneut geprüft. Ist die Bedingung einmal falsch, so wird die Schleife abgebrochen.
Beispiel: (Solange i kleiner 100 ist, gib i aus)
int i=0; while(i<100){ System.out.println("i ist: " + i); i++; //gleichbedeutend mit i = i+1; }
Beispiel: (solange Guthaben vorhanden ist, spiele)
while(Guthaben>0){ spiele(); //verändert Guthaben }
2. Die do-while-Schleife
Syntax:
do{ Sequenz }while(Bedingung)
Die do-while-Schleife führt zuerst die Sequenz aus und überprüft dann, ob die Bedingung wahr ist. Wenn die Bedingung wahr ist, wird die Sequenz wiederholt und dann erneut geprüft. Der Unterschied zur while-Schleife ist also, dass bei der while Schleife zuerst die Bedingung geprüft und dann die Sequenz ausgeführt wird. Bei der do-while-Schleife ist es umgekehrt. Sie führt zuerst die Sequenz aus und prüft dann die Bedingung.
Beispiel: (Spiele bis ein großer Gewinn von 10 EUR vorliegt)
do{ spiele(); }while( ermittleGewinn() == 10)
3. Die for-Schleife
Wenn man einen Zähler (i) benötigt, nimmt man die for-Schleife, weil sie bereits einen Zähler eingebaut hat.
Syntax:
for(Zähler initalisieren ; Bedingung ; Zähler verändern){ Sequenz }
Beispiel:
for(int i=0; i<100; i++){ System.out.println("i ist: " + i); }
Tue für jedes i (ausgehend von i=0) solange das i kleiner als 100 ist (i wird um 1 erhöht nach jedem Schleifendurchlauf): Gib den String „i ist: “ und den Wert von i aus.
4. Die For-Each-Schleife oder "Die verbesserte for-Schleife"
For-Each Schleifen funktionieren ähnlich wie gewöhnliche For-Schleifen. ForEach Schleifen verwenden aber im Gegensatz zu for-Schleifen keine nach außen sichtbare Laufvariable.
Schauen wir uns ein Beispiel an:
int[] array = new int[]{4, 8, 4, 2, 2, 1, 1, 5, 9}; for( int k: array ){ System.out.println("k= "+k); }
Man liest es: Für jeden integer Wert k im Array array tue: Gib „k= “ und den Wert für k aus.
Die Ausgabe ist
k = 4
k = 8
k = 4
k = 2
k = 2
k = 1
k = 1
k = 5
k = 9
Man sieht also, dass k nicht die Laufvariable hält, sondern den direkten Wert. ForEarch iteriert also über alle Elemente und ruf die Sequenz auf. Daher kann auch der Name abgeleitet werden: For Each element, do this. Intern wird dennoch ein Iterator-Objekt gehalten. Da man als Entwickler aber nicht immer am Index der Laufvariable interessiert ist, sondern manchmal nur an den Werten, macht ForEach immer dann Sinn, wenn man die Laufvariable nicht wirklich braucht und einfach für alle Elemente in einem Array oder einer ArrayList etwas ausführen möchte.
Ein Beispiel:
List list = new ArrayList(); list.add("Peter"); list.add("Frieda"); list.add("Manfred"); for(String name: list) { System.out.println(name); }
Man liest es: Für jeden String namen in der ArrayList list tue: Gib den namen aus.