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:

*
**
***
****
*****
*
**
***
****
*****
*
**
***
****
*****