Kapitel 3
Schleifen
Eine Schleife wiederholt einen Block, solange eine Bedingung gilt. So zählst du bis 1000, ohne 1000 Zeilen zu schreiben, oder liest so lange Eingaben, bis eine bestimmte kommt.
Die for-Schleife
Die for-Schleife nimmst du, wenn du vorher weißt, wie oft etwas passieren soll. In der Klammer stehen drei Teile, getrennt durch Semikolons:
for (int i = 1; i <= 5; i++) { ... }
- Start:
int i = 1legt den Zähler an. - Bedingung: Solange
i <= 5wahr ist, läuft der Block. - Schritt:
i++erhöhtinach jedem Durchlauf um 1.
Oft sammelt eine Variable außerhalb der Schleife ein Ergebnis, etwa eine Summe. sum += i ist kurz für sum = sum + i.
while und do-while
while prüft die Bedingung vor jedem Durchlauf. Das passt, wenn du nicht weißt, wie oft die Schleife läuft, sondern nur, wann sie aufhören soll. Ist die Bedingung schon am Anfang falsch, läuft der Block kein einziges Mal.
do { ... } while (...); prüft erst nach dem Durchlauf. Der Block läuft also mindestens einmal. Typisch ist eine Eingabe, die so lange wiederholt wird, bis sie gültig ist.
Die Eingabe enthält zwei ungültige Zahlen (15 und 0), deshalb fragt das Programm dreimal.
Geschachtelte Schleifen, break und continue
Eine Schleife kann in einer anderen stehen. Für jeden Durchlauf der äußeren läuft die innere komplett durch, wie Zeilen und Spalten einer Tabelle. print schreibt ohne Zeilenumbruch, ein leeres println() beendet die Zeile.
Zwei Befehle ändern den Ablauf:
breakbeendet die Schleife sofort.continueüberspringt den Rest des Blocks und macht mit dem nächsten Durchlauf weiter.
Typische Fehler
Endlosschleife
Ändert sich in der Schleife nichts an der Bedingung, hört sie nie auf:
int i = 0; while (i < 5) { System.out.println(i); // i++ fehlt }In Jario bricht das Programm dann nach einem Zeitlimit ab.
Einer zu viel oder zu wenig
i < 5läuft für 0 bis 4,i <= 5für 0 bis 5. Prüfe am kleinsten Fall, ob erster und letzter Durchlauf stimmen.Semikolon hinter for oder while
for (int i = 0; i < 5; i++);hat einen leeren Schleifenrumpf. Der Block danach läuft nur einmal. Beiwhile (...);hängt das Programm sogar fest.Zähler in der Schleife anlegen
Steht
int sum = 0;in der Schleife, beginnt die Summe bei jedem Durchlauf wieder bei 0. Alles, was über alle Durchläufe hinweg zählt, gehört vor die Schleife.