Die while-Schleife ist eine Kontrollstruktur, die eine Anweisung oder einen Anweisungsblock so lange wiederholt, wie eine logische Bedingung erfüllt ist. While-Schleifen gehören zu den sogenannten kopfgesteuerten Schleifen, d. h., die Bedingung wird vor jeder Iteration überprüft.
while (bedingung) { // Schleifenrumpf }
Syntaxdiagramm

Wie bei einer for-Schleife oder einer if-else-Bedingung ist eine Anweisungsliste entweder eine einfache Anweisung oder ein Anweisungsblock, also eine Liste von einfachen Anweisungen, die durch geschweifte Klammern zusammengehalten wird.
Beispiel
1. int strecke = 0; 2 while (strecke < 50) 3 { 4 auto.fahren(1); 5 auto.anzeigen(); 6 strecke++; 7 }
Zeile 2 enthält den Schleifenkopf. Auf das Schlüsselwort while folgt eine logische Bedingung in runden Klammern, die Schleifenbedingung. In den Zeilen 3 bis 7 sehen wir eine Anweisungsliste, die als Schleifenrumpf oder Schleifenkörper bezeichnet wird.
Programmfluss

Hier das Flussdiagramm, passend zur while-Schleife im obigen Beispiel.
Typische Anwendungsfälle für while-Schleifen
- Wiederholungen, bei denen nicht von vornherein feststeht, wie oft sie durchlaufen werden sollen.
- Wiederholungen, die auf bestimmte Ereignisse oder Benutzereingaben warten.
Geschachtelte while-Schleifen
Als typisches Beispiel für eine zweifach geschachtelte while-Schleife wird oft die Erzeugung einer Multiplikationstabelle angesehen:
int i = 1; while (i <= 5) { int j = 1; while (j <= 5) { System.out.print((i * j) + "\t"); j++; } System.out.println(); i++; }
Dieses Beispiel ist aber nicht besonders überzeugend. Da die Anzahl der Iterationen von vornherein feststeht, wäre hier eine zweifach geschachtelte for-Schleife sinnvoller gewesen:
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5; j++) System.out.print((i * j) + "\t"); System.out.println(); }
Ein sinnvolleres Beispiel wäre ein Programm zur Eingabe von Noten.
Die äußere while-Schleife geht von Klasse zu Klasse, bis der Benutzer sie durch Eingabe eines Befehls abbricht. Die innere Schleife geht von Schüler(in) zu Schüler(in), bis sie abgebrochen wird. Eine for-Schleife wäre hier nicht sinnvoll, da sich die Zahl der S. von Klasse zu Klasse unterscheidet.
Man könnte hier sogar eine dreifach geschachtelte while-Schleife einsetzen, weil für einen S. vielleicht 7 Noten, für eine andere S. 8 oder 9 Noten eingetragen werden müssen.
Zum Programm zur Eingabe von Noten - generiert von ChatGPT nach den obigen Vorgaben.
while-Schleifen sind vorprüfend. Die Schleifenbedingung wird vor dem jeweiligen Schleifendurchlauf überprüft. Daher kann es passieren, dass eine while-Schleife auch gar nicht durchlaufen wird.
Quellen:
- Lahres et al.: Objektorientierte Programmierung, Rheinwerk Computing 2021.
- Barnes, Kölling: Java lernen mit BlueJ - Objects first. Pearson-Verlag 2019.
- Ullenboom: Java ist auch eine Insel, Rheinwerk Computing 2023.