Schleifen (2)
Was eine Schleife haben muss
Das folgende Programm gibt die Zahlen von 1 bis 10 auf dem Bildschirm aus: . Dazu richtet es eine Variable i ein, die vor Beginn der Schleife initialisiert (mit einem Anfangswert belegt) und bei jedem Schleifendurchlauf mit der Anweisung i++ hochgezählt wird. Ist die Ausführungsbedingung i<=10 fürs Weitermachen nicht mehr gegeben, so wird die Schleife verlassen und das Programm in unserem Fall beendet.
public class WhileZähler {
public static void main(String[] args) {
int i;
// Deklaration von i
i = 1;
// Initialisieren von i
do {
System.out.print(" "+i);
i++;
// Hochzählen von i
} while (i<=10);
// Ausführungsbedingung
}
}
Alles in einer Klammer: Die For-Schleife
Weil Zählschleifen häufig gebraucht werden, hat man
ihnen eine übersichtlichere Kontrollstruktur spendiert, die
For-Schleife:
Hier steht alles, was zum Zählen benötigt wird, im Schleifenkopf. Es
sind drei Anweisungen:
- eine Laufvariable wird deklariert und initialisiert (hier mit int i=1),
- eine Ausführungsbedingung
wird angegeben (hier i<=10)und
- es wird angegeben, was mit der
Laufvariablen bei jedem Schleifendurchgang geschehen soll (hier i++) .
public class ForZähler {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
System.out.print(" "+i);
}
}
}
Falls Sie schon einmal mit Basic oder Pascal programmiert haben, sollten Sie sich einprägen, dass in Java die Schleifenbedingung in Java keine Abbruchbedingung, sondern eine Ausführungsbedingung ist. Die Schleife wird nicht ausgeführt, bis ein bestimmter Zustand eintritt, sondern solange ein bestimmter Zustand gegeben ist. Auch muss die Laufvariable in Java nicht unbedingt ein integer sein und i heißen. Überdies können Bedingung und Veränderungsanweisung recht frei formuliert sein. Probieren Sie das:
public class ForZähler2 {
public static void main(String[] args) {
for (String s=""; s.length()<=10; s=s+"x") {
System.out.println(s);
}
}
}
Die Laufvariable "lebt" übrigens - wie alle Variablen - nur in dem Anweisungsblock, in dem sie deklariert wurde, und das ist hier der Block der for-Schleife. Sobald die geschweifte Klammer geschlossen ist, kann man nicht mehr auf sie zugreifen.
Verzögerungstaktik
Das folgende Programm zählt mit einer For-Schleife bis 100. Dabei kann man zusehen. Die Gemütlichkeit wird durch eine Zeitverzögerung von 500 Millisekunden bewirkt, die nach jeder Zahl eingeschoben wird. Die Exception, die durch die Zeitverzögerung ausgelöst werden könnte, wird bei Bedarf durch "throws Exception" auf die Benutzerebene geworfen.
public class Countdown {
public static void main(String[] args) throws Exception { //
nötig wegen Sleep-Anweisung
System.out.println("Countdown\n");
for (int i=10; i>0; i--){
System.out.print(" "+i);
Thread.sleep(1000);
// bewirkt eine Verzögerung von 1000 Millisekunden
}
System.out.println(" Start!");
}
}
Aufgaben: