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)