Fußgesteuerte Schleife
Bild: Taylor, CC BY-SA 4.0, Wikimedia Commons
Kurz: Eine Schleife, deren Abbruchbedingung erst NACH dem ersten Durchlauf geprüft wird — der Schleifenkörper läuft also immer mindestens einmal.
Genauer: In Java ist do...while die einzige fußgesteuerte Schleifenform. Sinnvoll, wenn eine Aktion garantiert mindestens einmal passieren soll, bevor überhaupt geprüft wird, ob sie wiederholt werden muss — klassisches Beispiel: eine Menüabfrage, die mindestens einmal angezeigt wird.
Im Detail
Der Unterschied zwischen kopf- und fußgesteuert lässt sich am besten an einem Extremfall zeigen — einer Bedingung, die von Anfang an false ist:
int n = 0;
// Kopfgesteuert: Bedingung zuerst geprüft -> läuft 0 Mal
while (n > 0) {
System.out.println("läuft nie");
}
// Fußgesteuert: Körper zuerst ausgeführt, DANN geprüft -> läuft genau 1 Mal
do {
System.out.println("läuft trotzdem einmal");
} while (n > 0);Diese Garantie “mindestens ein Durchlauf” macht die fußgesteuerte Schleife zur richtigen Wahl, wann immer eine Aktion zwingend passieren muss, BEVOR überhaupt geprüft werden kann, ob eine Wiederholung nötig ist — klassisch bei Nutzereingaben, die erst nach der Eingabe validiert werden können. In der Praxis ist do-while in Java-Code trotzdem deutlich seltener als kopfgesteuerte Formen, weil sich viele Fälle auch mit einer Endlosschleife plus break lösen lassen, die manche Entwickler:innen als expliziter und lesbarer empfinden.
Klassisches Praxisbeispiel: Menüabfrage
Scanner scanner = new Scanner(System.in);
int auswahl;
do {
System.out.println("1) Neu starten 2) Speichern 3) Beenden");
auswahl = scanner.nextInt();
switch (auswahl) {
case 1 -> System.out.println("Neustart...");
case 2 -> System.out.println("Gespeichert.");
case 3 -> System.out.println("Beende...");
default -> System.out.println("Ungültige Auswahl, bitte erneut.");
}
} while (auswahl != 3);Das Menü MUSS mindestens einmal angezeigt werden, damit der Nutzer überhaupt eine Eingabe treffen kann — eine kopfgesteuerte Schleife bräuchte hier eine künstliche Vorab-Initialisierung der Abbruchvariable, um denselben Effekt zu erzielen, was den Code umständlicher macht.
Äquivalente Umsetzung ohne do-while
Dieselbe Logik lässt sich immer auch mit einer Endlosschleife (while (true)) plus explizitem break an der gewünschten Stelle nachbilden — dieser Stil erlaubt es, die Abbruchbedingung mitten im Schleifenkörper zu platzieren, statt nur am Anfang oder Ende, was manchmal flexibler ist als das starre “erst Körper, dann Bedingung”-Muster von do-while:
while (true) {
// Aktion
if (bedingungErfuellt) break;
}Terminologie in anderen Sprachen
Der Begriff “fußgesteuert” ist im deutschsprachigen Informatikunterricht gebräuchlich, in englischsprachiger Literatur spricht man meist von einer “post-condition loop” oder schlicht “do-while loop”, nach der Java-Schreibweise. Nicht jede Programmiersprache bietet diese Form nativ an: Python zum Beispiel verzichtet komplett auf eine eigene fußgesteuerte Schleifenkonstruktion und bildet dasselbe Verhalten über eine Endlosschleife mit break nach, während C, C++, C# und JavaScript wie Java eine echte do-while-Syntax mitbringen.
Siehe auch: do-while-Schleife, Kopfgesteuerte Schleife, Schleifen