Vorlesung Informatik 1 - Teil A: Java Kurs
3.3 Die while-Schleife
Syntax:
while(<log.Ausdruck>){
Anweisung(en);
}
Es ist eine vorgetestete Schleife, d.h. bevor der Schleifenrumpf ausgeführt wird, wird der logische Ausdruck geprüft. Daraus folgt, dass die Schleife eventuel nie ausgeführt wird, wenn der logische Ausdruck schon zu Beginn false ist.
Beispiel:
int i=0;
while(i<10){
System.out.println(i);
i=i+1;
} // [0,1, ... ,9]
Die int-Operatoren ++ und -- werden in Schleifen oft verwendet:
i++ : zählt i um 1 hoch, entspricht i=i+1
i-- : zählt i um 1 runter, entspricht i=i-1
Es gibt zwei Formen:
Präfix: ++i --i : der neue Wert wird verwendet
Postfix: i++ i-- : der alte Wert wird verwendet
Beispiele:
i=0;
while(i<10) System.out.println(i++); // [0,1,2, ... ,9] Kurzform der letzten Schleife
i=0;
while(i<10) System.out.println(++i); // [1,2, ... ,10] , weil das um 1 erhöhte i an println übergeben wird
i=10;
while(i>0) System.out.println(--i); // [9,8, ... ,0]
i=10;
while(i>0) System.out.println(i--); // [10,9, ... ,1]
Die folgende Schleife fragt den Anwender mit Hilfe eine JOptionPane-Dialogs, ob wir weitermachen sollen:
while(JOptionPane.showConfirmDialog(null, "Weiter?")==JOptionPane.YES_OPTION) System.out.println("ok");
Solange der Anwender auf 'Ja' klickt, läuft die Schleife weiter.
Häufige Probleme mit der while Schleife:
- Die Schleife wird nie durchlaufen, weil die Bedingung schon vorab false ist:
int x=10;
while(x>10) .....; - Endlosschleifen:
while(true) ... // trivial
int i=10;
while(i>0) System.out.println(i); // vergessen, die Bedingung im Schleifenrumpf zu ändern
boolean istHungrig = true;
while(istHungrig=true){
istHungrig=(JOptionPane.showConfirmDialog(null, "Hunger?")==JOptionPane.YES_OPTION);
}
Häufiger Fehler, auch bei if-Anweisungen: der rote Ausdrück sollte wohl heißen istHungrig==true.
Deshalb immer die sichere und professioneller Variante:
while(istHungrig){ ...
Weiterführende Links
Die while-Schleife in Java ist auch eine Insel
Zu den Lehrvideos dieser Woche (YouTube)