While-Schleifen sind vorprüfende Schleifen. Vor jedem Schleifendurchgang wird die Schleifenbedingung überprüft, und wenn sie nicht erfüllt ist, wird die Schleife erst gar nicht durchlaufen. Es kann daher also der Fall eintreten, dass eine while-Schleife kein einziges Mal durchlaufen wird:
int x = 10;
while (x > 20)
x--;
System.out.println(x);
Hier haben wir ein Beispiel für eine solche Schleife. Da 10 nicht größer ist als 20, wird die Schleife kein einziges Mal durchlaufen, am Ende des Quelltextes wird der unveränderte Wert 10 ausgegeben.
Wenn man möchte, dass eine Schleife auf jeden Fall mindestens einmal durchlaufen wird, muss man entweder dafür sorgen, dass die Schleifenbedingung mindestens einmal erfüllt ist, oder man ersetzt die while-Schleife durch eine do-while-Schleife. Hier ein Beispiel
int x = 10;
do
x--;
while (x > 20);
System.out.println(x);
Da die Schleifenbedingung erst am Ende der Schleife überprüft wird, wenn die Schleife also bereits einmal durchlaufen wurde, wird die Zahl 9 ausgegeben, denn der Befehl x--
wird auf jeden Fall einmal ausgeführt, egal, ob die Schleifenbedingung erfüllt ist oder nicht.
Do-while-Schleifen sind also nachprüfende Schleifen bzw. nicht-abweisende Schleifen, wie man auch am Flussdiagramm in der Abbildung erkennen kann.

Die Abbildung zeigt zunächst das Flussdiagramm einer do-while-Schleife. Wie man sieht, wird die Schleifenbedingung erst am Ende der Schleife überprüft, am "Fuß" der Schleife. Irgendwo habe ich auch mal den Begriff "fußgesteuert" gefunden, der do-while-Schleifen gut kennzeichnet. Logischerweise müsste man dann while-Schleifen als "kopfgesteuert" bezeichnen.
Im unteren Teil der Abbildung sehen wir ein Syntaxdiagramm für eine do-while-Schleife. Auf das Schlüsselwort "do" kommt zunächst die Anweisungsliste, dann das Schlüsselwort "while" und schließlich die Schleifenbedingung in runden Klammern.
Repeat-until-Schleifen
Eine do-while-Schleife darf nicht mit einer repeat-until-Schleife aus der Programmiersprache Pascal verwechselt werden. Vergleichen wir einmal die beiden folgenden Schleifen:
do-while-Schleife | repeat-until-Schleife |
|
|
Die do-while-Schleife würde nach dem ersten Schleifendurchgang mit x = 9
abbrechen. Die repeat-until-Schleife dagegen würde endlos wiederholt werden, da die Abbruch-Bedingung x > 20
nie eintritt. Die Schleifenbedingung bei der do-while-Schleife ist nämlich keine Abbruch-Bedingung, sondern das Gegenteil davon, eine Art Fortsetzungs-Bedingung oder Weitermachen-Bedingung (mir fehlt hier der korrekte Fachbegriff…).
Weiter geht es mit Folge 4.4: vorzeitiger Abbruch von Schleifen