Java-Grundlagen: Die while-Schleife, do-while-Schleife und for-Schleife in Java

Möchte man in Java bestimmte Programmabschnitte wiederholt ausführen lassen, sind dafür Schleifen genau das richtige Programmierwerkzeug.

In Java werden dem Entwickler drei unterschiedliche Schleifenarten zur Verfügung gestellt. Um für den jeweiligen Anwendungsfall die passende Schleifenart auszuwählen, müssen die Besonderheiten der Schleifen bekannt und verstanden sein.

In Java 5 wurde mit der erweiterten for-Schleife eine vierte Schleifenart hinzugefügt. In folgendem Beitrag erfährst du mehr: Die erweiterte for-Schleife in Java.

Dieser Beitrag behandelt die drei Java-Schleifenarten. Wir beginnen mit der abweisenden while-Schleife, gefolgt von der nichtabweisenden do-while-Schleife und der for-Schleife, die sich besonders gut als Zählerschleife einsetzen lässt.

plhq_teaser_hbox_gelb_fotolia_RA Studio_46292813

Unser großes
Android Online-Kurs
Gesamtpaket



Weitere Infos

Die while-Schleife in Java

Bei der while-Schleife wird zuerst der Testausdruck überprüft. Nur wenn dessen Ergebnis true ist, wird die nachstehende Schleifenanweisung ausgeführt. Somit handelt es sich bei der while-Schleife um eine abweisende Schleifenart.

Die Schleifenanweisung kann auch ein Block mit mehreren Anweisungen sein. Dieser muss dann mit geschweiften Klammern umschlossen werden.

Ist das Ergebnis des Testausdrucks false, wird die nachstehende Schleifenanweisung nicht ausgeführt und stattdessen übersprungen.

Der Rückgabewert des Testausdrucks muss immer vom boolean-Datentyp sein.

Nachdem die while-Schleif einmal durchlaufen wurde, d.h. die Schleifenanweisung ausgeführt wurde, wird erneut geprüft ob der Testausdruck erfüllt ist.

Die Schleife wird solange durchlaufen, bis der Testausdruck false wird. Ist dies der Fall, wird die Schleife verlassen und die Schleifenanweisung nicht mehr ausgeführt.

while (Testausdruck)
  Schleifenanweisung;


while (Testausdruck)
{
  Schleifenanweisung1;
  Schleifenanweisung2;
}

Die do-while-Schleife in Java

Bei der do-while-Schleife wird die Schleifenanweisung immer mindestens einmal ausgeführt. Sie ist daher eine nichtabweisende Schleifenart.

Nachdem die Schleifenanweisung das erste Mal ausgeführt wurde, wird der Testausdruck überprüft. Ist das Ergebnis des Testausdrucks true, wird die Schleifenanweisung ein weiteres Mal ausgeführt. Ist das Ergebnis false, wird die do-while-Schleife beendet.

Der Rückgabewert des Testausdrucks muss, wie bei der while-Schleife auch, vom boolean-Datentyp.

do
  Schleifenanweisung;
while (Testausdruck);


do
{
  Schleifenanweisung1;
  Schleifenanweisung2;
}
while (Testausdruck)

Die for-Schleife in Java

Die for-Schleife wird in Java oft als Zählerschleife benutzt, deren hauptsächliche Aufgabe darin besteht, einen einfachen Zähler hochzuzählen und gleichzeitig bestimmte Anweisungen ebensooft zu wiederholen.

Android Apps Programmieren Online-Kurs

Unser großes
Android Online-Kurs
Gesamtpaket



Weitere Infos

Der Schleifenkopf der for-Schleife besteht aus den folgenden drei Ausdrücken, von denen keiner zwingend erforderlich ist:

  • Initialisierungsausdruck – Führt die Initialisierung vor dem Start der Schleife durch.

  • Testausdruck – Wird zu Beginn der Schleife überprüft und entscheidet, ob die Schleife betreten wird oder soll.

  • Updateausdruck – Führt Veränderungen nach jedem Schleifendurchlauf aus, z.B. die Erhöhung des Schleifenzählers.

Es dürfen mehrere Einzelausdrücke in den Initialisierungs- und Updateausdruck angegeben werden. Diese müssen jeweils durch ein Komma voneinander getrennt werden.

Ist kein Initialisierungsausdruck angegeben, wird keine Initialisierung vor dem Start der for-Schleife durchgeführt.

Das Gleiche trifft auch auf den Updateausdruck zu. Oft wird der Initialisierungsausdruck für die Deklaration von Zählervariablen genutzt. Diese existieren nur innerhalb des Schleifenblocks und sind von außen nicht sichtbar.


Ist kein Testausdruck angegeben, setzt der Java-Compiler automatisch true an diese Stelle, wodurch der Testausdruck immer erfüllt ist und eine Endlosschleife vorliegt.

for (INITIALISIERUNG; TEST; UPDATE)
  Schleifenanweisung;


for (INITIALISIERUNG; TEST; UPDATE)
{
  Schleifenanweisung1;
  Schleifenanweisung2;
}

Quellcode-Beispiele für die drei Schleifenarten in Java

Beispiele für die drei Schleifenarten in Java.

/*
* Beispielanwendung Schleifen in Java.
*/

public class Schleifen{
 public static void main(String[] args) {

   int a = 1, b = 1;
   System.out.println();

   while (a < 10)
   {
      System.out.println("Schleifendurchlauf " + a);
      if (a == 9) System.out.println();
      a++;
   }


   do
   {
      System.out.println("Schleifendurchlauf " + b);
      if (b == 9) System.out.println();
      b++;
   }
   while (b < 10);


   for (int c = 1, d = 19, jahr = 2013; c < d; c++, d--)
   {
      System.out.print("Schleifendurchlauf " + c + " im Jahr " + jahr + ".");
      System.out.println("   c = " + c + ", d = " + d);
   }      

 }
 
}

In dem oberen Quellcode-Beispiel werden die drei Schleifenarten in folgender Reihenfolge verwendet:

  • while-Schleife – Zeile 11 bis 16
  • do-while-Schleife – Zeile 19 bis 25
  • for-Schleife – Zeile 28 bis 32

Der Quellcode ist größtenteils selbsterklärend. Eine erwähnenswerte Besonderheit ist der Schleifenkopf der for-Schleife in Zeile 28.

Im Initialisierungsausdruck der for-Schleife werden statt einer gleich drei Variablen deklariert und initialisiert: int c = 1, d = 2, jahr = 2013. Zwei dieser drei Variablen werden anschließend im Updateausdruck inkrementiert bzw. dekrementiert: c++, d--.

In der unteren Abbildung ist die Kommandozeilenausgabe der Beispielanwendung dargestellt.

Java Schleifen Ausgabe

Java Schleifen – Die while-, do-while– und for-Schleife in Java

Verändern der Auswertungsreihenfolge von Schleifen in Java mit der continue– und break-Anweisung

Mit den beiden Schlüsselwörtern continue und break kann die Auswertungsreihenfolge von Schleifen in Java verändert werden.

Die continue-Anweisung wird immer dann verwendet, wenn der aktuelle Schleifendurchlauf beendet und die nächste Iteration der Schleife gestartet werden soll. Dabei springt das Programm zum Schleifenende und beginnt anschließend die Schleife von vorne.

Die break-Anweisung wird immer dann verwendet, wenn eine Schleife umgehend verlassen werden soll. Dabei wird aus der Schleife gesprungen und das Programm mit der ersten Anweisung nach der Schleife fortgesetzt.

Hinweis: Werden mehrere Schleifen ineinander verschachtelt, so wirkt die continue– bzw. break-Anweisung immer auf die Schleife, in der die jeweilige Anweisung steht. Um weiter außen liegende Schleifen zu verlassen, muss die betreffende Schleife mit einem Label versehen werden.

Beispiele für die continue– und break-Anweisung in Java

Auswertungsreihenfolge von Schleifen verändern in Java.

 
/*
* Beispielanwendung Auswertungsreihenfolge von Schleifen verändern.
*/

public class SchleifenAnweisungen1{
 public static void main(String[] args) {

   int a = 1, b = 1, c = 1;
   System.out.println();

   while (a <= 5)
   {
      System.out.println("Schleifendurchlauf " + a);
      
      a++;
   }


   System.out.println();
   while (b <= 5)
   {
      if (b == 3) 
      {
         System.out.println("Continue-Anweisung wird ausgefuehrt.   b = " + b);
         b++;

         continue;
      }

      System.out.println("Schleifendurchlauf " + b);
      
      b++;
   }


   System.out.println();
   while (c <= 5)
   {
      if (c == 3) 
      {
         System.out.println("Break-Anweisung wird ausgefuehrt.   c = " + c);
         
         break;
      }

      System.out.println("Schleifendurchlauf " + c);
      
      c++;
   }
     

 }
 
}

In dem oberen Quellcode-Beispiel werden die continue– und break-Anweisung verwendet.

Im oberen Programmteil (Zeile 11 bis 16) ist eine normale while-Schleife angegeben, die in jedem Schleifendurchlauf eine Zeichenkette mit dem aktuellen Schleifendurchlauf ausgibt.

In dem mittleren Programmteil (Zeile 20 bis 33) ist die gleiche while-Schleife angegeben, mit dem Unterschied, dass im dritten Schleifendurchlauf die continue-Anweisung ausgeführt wird. Dadurch wird sofort zum Ende des Schleifenkörpers zu Zeile 33 gesprungen und anschließend die Schleife von vorne begonnen.

In dem unteren Programmteil (Zeile 37 bis 49) wird anstelle der continue-Anweisung eine break-Anweisung verwendet. Dadurch wird beim Erreichen der break-Anweisung (im dritten Durchlauf) die Schleife sofort beendet und verlassen.

In der unteren Abbildung ist die Kommandozeilenausgabe der Beispielanwendung dargestellt.

Java Schleifen Anweisungen 2

Java Schleifen – Die continue- und break-Anweisung

Beispiele für die break-Anweisung in verschachtelten Schleifen in Java

Auswertungsreihenfolge von Schleifen verändern in Java.

/*
* Beispielanwendung Auswertungsreihenfolge von Schleifen verändern.
*/

public class SchleifenAnweisungen2{
 public static void main(String[] args) {

   int c = 1, d = 1;
   System.out.println();
     

   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {         
         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         if (d == 3) 
         {
            System.out.println("-- Innere Schleife.         Break-Anweisung.");
            break; 
         }

         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;
   while (c < 5)
   {
      if (c == 3) 
      {
         System.out.println("- Aussere Schleife.   Break-Anweisung.");         
         break;  
      } 

      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }    

      c++;
      d = 1;
   }


 }
 
}

In dem oberen Quellcode-Beispiel wird die break-Anweisung in verschachtelten Schleifen verwendet.

Im oberen Programmteil (Zeile 12 bis 24) sind zwei normale while-Schleifen ineinander verschachtelt worden, die jeweils in jedem Schleifendurchlauf eine Zeichenkette mit dem aktuellen Schleifendurchlauf ausgeben.

In dem mittleren Programmteil (Zeile 28 bis 46) sind die die gleichen while-Schleifen angegeben, mit dem Unterschied, dass bei der inneren Schleife im dritten Schleifendurchlauf die break-Anweisung ausgeführt wird. Dadurch wird sofort aus dem inneren Schleifenkörper zu Zeile 44 gesprungen und anschließend die äußere Schleife weiter ausgeführt.

In dem unteren Programmteil (Zeile 50 bis 68) wird die break-Anweisung in der äußeren Schleife ausgeführt. Dadurch wird beim Erreichen der break-Anweisung (im dritten Durchlauf) die äußere Schleife sofort beendet und verlassen. Dabei wird die innere Schleife nicht noch einmal ausgeführt.

In der unteren Abbildung ist die Kommandozeilenausgabe der Beispielanwendung dargestellt.

Java Schleifen Anweisungen 2

Java Schleifen – Die break-Anweisung in verschachtelten Schleifen

Beispiele für die continue-Anweisung in verschachtelten Schleifen in Java

Auswertungsreihenfolge von Schleifen verändern in Java.

/*
* Beispielanwendung Auswertungsreihenfolge von Schleifen verändern.
*/

public class SchleifenAnweisungen3{
 public static void main(String[] args) {

   int c = 1, d = 1;
   System.out.println();

     
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         if (d == 3) 
         {
            d++;
            System.out.println("-- Innere Schleife.       Continue-Anweisung.");
            continue;
         } 

         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;
   while (c < 5)
   {
      if (c == 3) 
      {
         c++;
         System.out.println("- Aussere Schleife. Continue-Anweisung.");
         continue;
      }

      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }    

      c++;
      d = 1;
   }

 }
 
}

In dem oberen Quellcode-Beispiel wird die continue-Anweisung in verschachtelten Schleifen verwendet.

Im oberen Programmteil (Zeile 12 bis 24) sind zwei normale while-Schleifen ineinander verschachtelt worden, die jeweils in jedem Schleifendurchlauf eine Zeichenkette mit dem aktuellen Schleifendurchlauf ausgeben.

In dem mittleren Programmteil (Zeile 28 bis 47) sind die die gleichen while-Schleifen angegeben, mit dem Unterschied, dass bei der inneren Schleife im dritten Schleifendurchlauf die continue-Anweisung ausgeführt wird. Dadurch wird sofort zum Ende des inneren Schleifenkörpers gesprungen und anschließend die innere Schleife ein weiteres Mal ausgeführt.

In dem unteren Programmteil (Zeile 51 bis 70) wird die continue-Anweisung in der äußeren Schleife ausgeführt. Dadurch wird beim Erreichen der continue-Anweisung (im dritten Durchlauf) zum Ende der äußeren Schleife gesprungen und diese anschließend wieder von vorne ausgeführt.

In der unteren Abbildung ist die Kommandozeilenausgabe der Beispielanwendung dargestellt.

Java Schleifen Anweisungen 3

Java Schleifen – Die continue-Anweisung in verschachtelten Schleifen

Schleifen mit Label – Gelabelte break– und continue-Anweisungen in Java

Möchte man gezielt aus geschachtelten Schleifen springen, müssen gelabelte Sprunganweisungen verwendet werden. Dadurch ist es möglich mehrfach geschachtelte Schleifen mit einer gelabelten break-Anweisung direkt zu beenden, unabhängig von der Position der break-Anweisung.

Wird eine mit einem Label versehene break– oder continue-Anweisung verwendet, dann muss auch immer das verwendete Label den Block, der die gelabelte Anweisung enthält, umschließen.

In dem folgenden Quellcode-Beispiel wird jeweils eine break– oder continue-Anweisung mit Label verwendet.

Auswertungsreihenfolge von Schleifen verändern in Java.

/*
* Beispielanwendung Auswertungsreihenfolge von Schleifen verändern mit Labeln.
*/

public class SchleifenAnweisungen4{
 public static void main(String[] args) {

   int c = 1, d = 1;
   System.out.println();

     
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         System.out.println("-- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;

   labelContinueSchleife:
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         if (d == 3) 
         {
            d++;
            System.out.println("- Innere Schleife. Continue-Anweisung Label.");
            continue labelContinueSchleife;
         } 

         System.out.println("- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

   System.out.println();
   c = 1; d = 1;

   labelBreakSchleife:
   while (c < 5)
   {
      System.out.println("- Aussere Schleife.   c = " + c);

      while (d < 5)
      {
         if (d == 3) 
         {
            System.out.println("- Innere Schleife. Break-Anweisung Label.");
            break labelBreakSchleife; 
         }

         System.out.println("- Innere Schleife.         d = " + d);
         d++;        
      }      

      c++;
      d = 1;
   }

 }
 
}

Im oberen Programmteil (Zeile 12 bis 24) sind zwei normale while-Schleifen ineinander verschachtelt worden, die jeweils in jedem Schleifendurchlauf eine Zeichenkette mit dem aktuellen Schleifendurchlauf ausgeben.

In dem mittleren Programmteil (Zeile 29 bis 49) sind die die gleichen while-Schleifen angegeben, mit dem Unterschied, dass bei der inneren Schleife im dritten Schleifendurchlauf die continue-Anweisung mit dem Label labelContinueSchleife ausgeführt wird.

Dadurch wird sofort zum Ende des äußeren Schleifenkörpers gesprungen, da die äußere Schleife das Label labelContinueSchleife trägt, und anschließend die äußere Schleife von Beginn an erneut ausgeführt.

plhq_teaser_hbox_gelb_fotolia_RA Studio_46292813

Unser großes
Android Online-Kurs
Gesamtpaket



Weitere Infos

Würde statt der gelabelten continue-Anweisung mit einer einfachen continue-Anweisung gearbeitet, wäre das Programm nur bis Zeile 45 gesprungen und die innere while-Schleife erneut ausgeführt worden.

In dem unteren Programmteil (Zeile 54 bis 73) sind die die gleichen while-Schleifen angegeben, mit dem Unterschied, dass bei der inneren Schleife im dritten Schleifendurchlauf die break-Anweisung mit dem Label labelBreakSchleife ausgeführt wird. Dadurch wird sofort aus dem inneren und dem äußeren Schleifenkörper zu Zeile 74 gesprungen und beide Schleifen verlassen.

In der unteren Abbildung ist die Kommandozeilenausgabe der Beispielanwendung dargestellt.

Java Schleifen Anweisungen 4

Java Schleifen – Die continue- und break-Anweisung mit Label


Comments 2

  1. Pingback: Schleifen -

  2. Pingback: Java-Grundlagen: Die erweiterte for-Schleife in Java

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.