Schleife

Einführung

Eine Schleife ist eine wichtige Kontrollstruktur. Sie wiederholt einen Anweisungs-Block – den so genannten Schleifenrumpf oder Schleifenkörper – so lange, wie eine Schleifenbedingung als Laufbedingung gültig bleibt bzw. als Abbruchbedingung nicht eintritt. Die Schleifenbedingung wird mit Hilfe der booleschen Algebra formuliert. Schleifen können in der Java-Programmierung nur im Körper von Methoden und Konstruktoren implementiert werden. Schleifen, deren Schleifenbedingung immer zur Fortsetzung führt oder die keine Schleifenbedingung haben, sind Endlosschleifen. Eine Endlosschleife ist ein typischer logischer Fehler in der Programmierung und kann nur durch einen Eingriff von außen unterbrochen werden (http://openbook.galileocomputing.de/javainsel9/javainsel_02_007.htm#mjb517285509ecebe1bb38c15fc43).

Prinzipiell werden folgende Schleifentypen unterschieden:

Aufbau

Jeder Schleife besteht aus einem Schleifenkopf bzw. Schleifenfuss. Hier wird die Laufbedingung im Sinne der boolschen Algebra definiert. Im Schleifenkörper werden Anweisungen definiert, die bei jedem Schleifendurchlauf (Iteration) wiederholt durchzuführen sind.

WHILE-Schleife

Unsere erste Betrachtung gilt der While - Schleife. Sie wird als kopfgesteuert bezeichnet, weil zu Beginn die Ausführbedingung im Sinne der boolesche Algebra überprüft wird. Ist die Ausführbedingung erfüllt, wird der Körper ausgeführt. Diese Schleife wird so oft durchlaufen, wie die Bedingung wahr ergibt. Eine logische Operation kann beispielsweise sein: (i>10). Solange diese Bedingung wahr ist, läuft die Schleife. Wird kein Vergleichsoperator der Stopp-Bedingung im Schleifenkörper geändert, ist diese Kontrollstruktur meist nicht die richtige. Die Schleife wird dann entweder kein einziges Mal durchlaufen oder unendlich lang.

Im folgenden Beispiel wird eine einfache Variable i deklariert und initialisiert. Die Schleife wird nun so oft durchlaufen, wie die Variable kleiner als zehn ist. Um sicherzustellen, dass die Schleife nicht zu einer endlosen Ausgabe führt, wird die Variable im Anweisungsblock hochgezählt. Die Ausgabe liefert: 012345789.

public class MyClass{

    public void testeSchleife(){

    // Deklaration und Initialisierung einer Schleifenvariablen

    int i = 0;

    // Kopf einer Schleife mit Laufbedingung "so lange i<10"

    while(i<10) {

         // Schleifen Körper, der solange ausgeführt wird, solange i kleiner 10 ist

System.out.print(i);

    // Die Schleifen Variable wird verändert, damit die Laufbedingung beendet wird und die Schleife nicht endlos oft ausgeführt wird

    i++;

}

}

}

FOR-Schleife

Die sogenannte For – Schleife ist ein Spezialfall der kopfgesteuerten WHILE-Schleife und setzt sich aus drei Bereichen zusammen.

Im ersten Schritt werden alle Variablen erzeugt, was jedoch nur einmalig beim Eintritt in die Schleife geschieht. Danach wird die eigentliche Bedingung getestet und gegebenen Falls der Anweisungsblock ausgeführt. Drittens wird die im ersten Schritt deklarierte und im zweiten Schritt überprüfte Variable hoch bzw. runter gezählt (inkrementiert bzw. dekrementiert). Die Anweisungen im Schleifenkörper werden solange ausgeführt, wie die Bedingung wahr ergibt.

For-Each-Schleife

Die For-Each-Schleifen funktionieren ähnlich wie die For-Schleifen. Die For-Each-Schleife verwendet jedoch keine nach außen sichtbare Laufvariable. Mit der For-Each-Schleife wird immer über alle Elemente einer entsprechenden Datenstruktur iteriert. Schauen wir uns ein Beispiel an:

List<String> list = new ArrayList<String>();

list.add("Text 1");

list.add("Text 2");

list.add("Text 3");

for (String temp : list) {

System.out.println(temp);

}

Hier werden String Objekte der dynamischen Datenstruktur list vom Typ ArrayList hinzugefügt. Anschließend werden sie mit Hilfe der FOR-EACH-Schleife ausgelesen. Es reicht eine lokale Variable mit passendem Datentyp zu definieren; hier also String. Im Körper der Schleife werden die Objekte der list eines nach dem anderen an die lokale Variable temp übergeben. Wurden alle Elemente der list ausgelesen, stoppt die Schleife. Das temp Objekt steht im Körper der Schleife zur Verarbeitung bereit.

Do-While-Schleife

Die Do-While-Schleife ist eine Variante der While-Schleife. Der Unterschied besteht darin, dass der Code der Schleife mindestens einmal ausgeführt wird, bevor die Stopp-Bedingung erstmalig überprüft wird.

Das folgende Beispiel soll dies verdeutlichen. Zu beachten ist die Syntax der Anweisung. Sie setzt sich zusätzlich aus dem Do-Befehl zusammen. Obwohl unsere Variable als falsch definiert ist, wird unsere Schleife mindestens einmal ausgeführt.

public class MeineKlasse{

public void testDoWhile() {

boolean b = false;

do{

System.out.print("Java");

}while(b); 

}

}