1. Einführung in die Schleife do-while
Stellen Sie sich vor: Sie schreiben ein Programm, das die vom Benutzer gedachte Zahl errät. Man muss die Zahl mindestens einmal abfragen und die Anfrage wiederholen, bis man richtig rät. Wenn die Bedingung im Voraus geprüft wird, kann eine normale while-Schleife die Schleife womöglich gar nicht betreten.
Hier hilft do-while. Im Unterschied zu while führt sie den Schleifenkörper immer mindestens einmal aus – selbst wenn die Bedingung sofort falsch ist. Das ist wie einen Kaugummi an der Kasse zu bekommen, unabhängig davon, ob man etwas kauft.
Syntax von do-while
Ganz einfach: noch ein „Pärchen“ von Schlüsselwörtern in Java.
do
{
// Schleifenkörper: Dieser Code wird mindestens einmal ausgeführt
}
while (condition);
do-while
Achten Sie auf das Semikolon ; am Ende nach der Klammer der Bedingung! Bei der normalen while-Schleife gibt es das nicht, hier jedoch schon – eine klassische Falle für Einsteiger.
Beschreibung der Schritte der do-while-Schleife
- Betreten des Schleifenkörpers (immer mindestens einmal).
- Prüfung der Bedingung.
- Wenn die Bedingung wahr ist – den Schleifenkörper erneut ausführen.
- Wenn die Bedingung falsch ist – die Schleife beenden.
2. Unterschied zur gewöhnlichen while-Schleife
Erinnern wir uns an das Grundschema einer normalen while-Schleife:
while (condition)
{
// Schleifenkörper
}
Der Körper wird kein einziges Mal ausgeführt, wenn die Bedingung von Anfang an falsch ist!
Nun ein Beispiel mit do-while:
do
{
// Schleifenkörper
}
while (condition);
Der Schleifenkörper wird mindestens einmal ausgeführt, selbst wenn die Bedingung sofort falsch ist!
Veranschaulichen wir den Unterschied mit Code:
// Gewöhnliche while-Schleife
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// Es wird nichts ausgegeben
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// Gibt "count2 = 0" aus, obwohl die Bedingung falsch ist!
Manchmal wirkt das wie eine „Seltsamkeit“, aber genau dieses Verhalten ist bei Benutzereingaben und bei der Datenvalidierung erforderlich.
3. Praktische Einsatzszenarien für do-while
Wo begegnet uns diese Schleife am häufigsten?
Datenvalidierung
Ein gängiges Szenario: Wir bitten den Benutzer, gültige Daten einzugeben (zum Beispiel ein Passwort mit mindestens 6 Zeichen) und wiederholen die Abfrage, bis alles korrekt ist.
String password;
do
{
System.out.print("Geben Sie ein neues Passwort ein (mindestens 6 Zeichen): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("Passwort akzeptiert!");
Der Schleifenkörper wird mindestens einmal ausgeführt – selbst wenn der Benutzer sofort ein langes Passwort eingibt.
Menü in Konsolenanwendungen
Ein häufiges Muster: ein Menü anzeigen, auf einen Befehl warten und nur bei einem speziellen Befehl beenden.
String command;
do
{
System.out.println("Menü:");
System.out.println("1. Begrüßung anzeigen");
System.out.println("2. Beenden");
System.out.print("Wählen Sie eine Aktion: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("Hallo, Welt!");
}
else if (!command.equals("2"))
{
System.out.println("Unbekannter Befehl.");
}
}
while (!command.equals("2"));
System.out.println("Auf Wiedersehen!");
4. Tabelle: Vergleich von while und anderen Schleifen
| Schleifentyp | Zeitpunkt der Bedingungsprüfung | Mögliche Anzahl der Ausführungen des Schleifenkörpers | Wann geeignet |
|---|---|---|---|
|
Vorher | 0-mal oder öfter | Wenn die Anzahl der Wiederholungen im Voraus unbekannt ist |
|
Danach | 1-mal oder öfter | Wenn der Schleifenkörper mindestens einmal ausgeführt werden soll |
|
Vorher | 0-mal oder öfter | Wenn die Anzahl der Iterationen bekannt ist |
GO TO FULL VERSION