Einführung in Java 6
Geschachtelte for-Schleifen in Java
Anhand eines Sägezahnbeispiels wollen wir unser Programm schrittweise aufbauen.
Unser Programm soll Sterne ( * ) ausgeben, beginnend mit einem Stern in der ersten Zeile, zwei Sterne in der zweiten usw. bis 5 Sterne in der fünften Zeile.
*
**
***
****
*****
anschließend soll die Ausgabe noch zwei mal wiederholt werden.
Zuerst schreiben wir das Programm für einen Stern pro Zeile, also eine Schleife, die die Ausgabe " * " fünfmal wiederholen soll.
for (int k=1; k<=5; k++) System.out.println("*");
Wir haben eine Schleife erzeugt, welche einen * fünf mal hintereinander ausgibt.
*
*
*
*
*
Soweit OK!
Nun soll unser Programm aber nach jedem Schleifendurchlauf einen * mehr erzeugen.
Wir bauen eine weitere Schleife in unsere Schleife ein, die jeden Schleifendurchlauf zählt und die Ausgabe um einen * erhöht.
for (int k=1; k<=5; k++) { for (int i=1; i<=k; i++) System.out.println("*"); }
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
Nun, das hat noch nicht so ganz geklappt.
Mit i<=k weisen wir unserer mittleren Schleife an, die Ausgabe k-mal zu wiederholen. Dies macht unser Programm auch, jedoch passiert bei jedem Schleifendurchlauf auch ein Zeilenvorschub.
Hier ändern wir einfach System.out.println("*"); in System.out.print("*"); und fügen als nächste Anweisung noch ein System.out.println(); ein. ( Sonst würden alle * In einer Reihe sein, da nach Ablauf der mittleren Schleife kein Zeilenvorschub passiert ).
for (int k=1; k<=5; k++) // 1. Schleife f. die Anzahl der Zeilen { for (int i=1; i<=k; i++) // 2. Schleife f. die Anzahl der Sterne in Abhängigkeit der Zeilen System.out.print("*"); System.out.println(); }
*
**
***
****
*****
Feine Sache, es hat funktioniert!
Jetzt haben wir einen Sägezahn, aber wir möchten insgesamt 3 haben.
Wie lösen wir nun diese Aufgabe? Ganz einfach, wir bauen einfach eine Schleife drum herum, welche unser Programm drei mal durchlaufen läßt!
for (int a=1; a<=3; a++) // Läßt die beiden mittleren Schleifen 3-mal durchlaufen { for (int k=1; k<=5; k++) { for (int i=1; i<=k; i++) System.out.print("*"); System.out.println(); } }
Das Endergebnis sieht nun so aus:
*
**
***
****
*****
*
**
***
****
*****
*
**
***
****
*****