Skip to content

Kapitel 7: Schleifen (for, while, do-while)

🎯 Lernziele

In diesem Kapitel lernst du:

  • for-Schleife (bekannt Anzahl Wiederholungen)
  • while-Schleife (Bedingung vor Prüfung)
  • do...while-Schleife (mindestens einmal ausführen)
  • break und continue Schlüsselwörter
  • Verschachtelte Schleifen
  • Schleifen-Übungsaufgaben (Muster drucken, Summen, Zahlen raten)

7.1 for-Schleife (bekannte Wiederholungsanzahl)

🔄 Wann for verwenden?

Verwende for, wenn du weißt, wie oft die Schleife ausgeführt werden soll!

📝 Syntax

java
for (initialisierung; bedingung; aktualisierung) {
    // Code-Block (wird wiederholt ausgeführt)
}

Ablauf:

  1. Initialisierung: Variable wird einmalig initialisiert
  2. Bedingung: Wenn true, wird Code ausgeführt; wenn false, endet Schleife
  3. Code-Block: Wird ausgeführt
  4. Aktualisierung: Variable wird geändert (z.B. i++)
  5. Zurück zu Schritt 2

📋 Beispiel 1: Zahlen 1 bis 5 ausgeben

java
public class ForBeispiel1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println("i = " + i);
        }
        
        System.out.println("Schleife beendet!");
    }
}

Ausgabe:

i = 1
i = 2
i = 3
i = 4
i = 5
Schleife beendet!

📋 Beispiel 2: Summe von 1 bis 100 berechnen

java
public class ForBeispiel2 {
    public static void main(String[] args) {
        int summe = 0;
        
        for (int i = 1; i <= 100; i++) {
            summe = summe + i;  // Oder: summe += i;
        }
        
        System.out.println("Summe von 1 bis 100: " + summe);  // 5050
    }
}

📋 Beispiel 3: Gerade Zahlen von 1 bis 20 ausgeben

java
public class ForBeispiel3 {
    public static void main(String[] args) {
        for (int i = 2; i <= 20; i += 2) {
            System.out.println(i);
        }
    }
}

Ausgabe:

2
4
6
8
10
12
14
16
18
20

7.2 while-Schleife (Bedingung vor Prüfung)

🔄 Wann while verwenden?

Verwende while, wenn du nicht weißt, wie oft die Schleife ausgeführt wird, aber die Bedingung vor dem ersten Durchlauf prüfen willst!

📝 Syntax

java
while (bedingung) {
    // Code-Block (wird ausgeführt, solange Bedingung wahr ist)
}

📋 Beispiel 1: Zahlen von 1 bis 5 ausgeben

java
public class WhileBeispiel1 {
    public static void main(String[] args) {
        int i = 1;  // Initialisierung
        
        while (i <= 5) {  // Bedingung
            System.out.println("i = " + i);
            i++;  // Aktualisierung (nicht vergessen!)
        }
        
        System.out.println("Schleife beendet!");
    }
}

Ausgabe:

i = 1
i = 2
i = 3
i = 4
i = 5
Schleife beendet!

📋 Beispiel 2: Geheimzahl raten (vereinfacht)

java
import java.util.Scanner;

public class WhileBeispiel2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int geheimzahl = 42;
        int rateversuch;
        
        System.out.println("Errate die Zahl zwischen 1 und 100!");
        
        while (true) {  // Endlosschleife (wird mit break beendet)
            System.out.print("Dein Tipp: ");
            rateversuch = scanner.nextInt();
            
            if (rateversuch == geheimzahl) {
                System.out.println("Richtig! Die Zahl war " + geheimzahl);
                break;  // Schleife beenden
            } else if (rateversuch < geheimzahl) {
                System.out.println("Zu niedrig!");
            } else {
                System.out.println("Zu hoch!");
            }
        }
        
        scanner.close();
    }
}

⚠️ Achtung: Endlosschleife vermeiden!

java
// ❌ Gefährlich: Endlosschleife!
int i = 1;
while (i <= 5) {
    System.out.println(i);
    // i++ fehlt → i bleibt 1 → Bedingung i <= 5 bleibt immer wahr!
}

// ✅ Richtig:
int i = 1;
while (i <= 5) {
    System.out.println(i);
    i++;  // i wird erhöht, irgendwann i > 5 → Schleife endet
}

7.3 do...while-Schleife (mindestens einmal ausführen)

🔄 Wann do...while verwenden?

Verwende do...while, wenn der Code mindestens einmal ausgeführt werden soll, auch wenn die Bedingung anfangs false ist!

📝 Syntax

java
do {
    // Code-Block (wird mindestens einmal ausgeführt)
} while (bedingung);

📋 Beispiel 1: Menü anzeigen (bis Benutzer "Beenden" wählt)

java
import java.util.Scanner;

public class DoWhileBeispiel1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int auswahl;
        
        do {
            System.out.println("\n=== Menü ===");
            System.out.println("1. Option 1");
            System.out.println("2. Option 2");
            System.out.println("3. Beenden");
            System.out.print("Wähle: ");
            auswahl = scanner.nextInt();
            
            switch (auswahl) {
                case 1:
                    System.out.println("Option 1 gewählt!");
                    break;
                case 2:
                    System.out.println("Option 2 gewählt!");
                    break;
                case 3:
                    System.out.println("Programm wird beendet...");
                    break;
                default:
                    System.out.println("Ungültige Auswahl!");
            }
        } while (auswahl != 3);
        
        scanner.close();
    }
}

📋 Beispiel 2: Passwort abfragen (mindestens einmal)

java
import java.util.Scanner;

public class DoWhileBeispiel2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String passwort;
        int versuche = 0;
        
        do {
            System.out.print("Passwort eingeben: ");
            passwort = scanner.nextLine();
            versuche++;
            
            if (!passwort.equals("geheim123")) {
                System.out.println("Falsches Passwort! Versuch " + versuche);
            }
        } while (!passwort.equals("geheim123") && versuche < 3);
        
        if (passwort.equals("geheim123")) {
            System.out.println("Login erfolgreich!");
        } else {
            System.out.println("Zu viele Fehlversuche!");
        }
        
        scanner.close();
    }
}

🔍 Unterschied: while vs. do...while

java
// while: Bedingung wird ZUERST geprüft
int x = 10;
while (x < 5) {
    System.out.println("While: x = " + x);  // Wird NICHT ausgeführt!
}

// do...while: Code wird ZUERST ausgeführt, dann Bedingung geprüft
int y = 10;
do {
    System.out.println("Do-While: y = " + y);  // Wird EINMAL ausgeführt!
    y++;
} while (y < 5);

Ausgabe:

Do-While: y = 10

7.4 break und continue Schlüsselwörter

🛑 break: Schleife sofort beenden

java
public class BreakBeispiel {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break;  // Schleife sofort beenden, wenn i == 5
            }
            System.out.println(i);
        }
        
        System.out.println("Nach der Schleife");
    }
}

Ausgabe:

1
2
3
4
Nach der Schleife

⏭️ continue: Aktuellen Durchlauf überspringen

java
public class ContinueBeispiel {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                continue;  // Springt zur Aktualisierung (i++), überspringt System.out.println(i)
            }
            System.out.println(i);
        }
    }
}

Ausgabe:

1
2
4
5

📋 Beispiel: Gerade Zahlen ausgeben (mit continue)

java
public class ContinueBeispiel2 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 != 0) {  // Wenn i ungerade ist
                continue;  // Überspringt ungerade Zahlen
            }
            System.out.println(i + " ist gerade.");
        }
    }
}

Ausgabe:

2 ist gerade.
4 ist gerade.
6 ist gerade.
8 ist gerade.
10 ist gerade.

7.5 Verschachtelte Schleifen

🔄 Schleifen in Schleifen

Du kannst Schleifen innerhalb von Schleifen haben!

📋 Beispiel 1: Einfach verschachtelt

java
public class VerschachteltBeispiel1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) {
            System.out.println("Äußere Schleife: i = " + i);
            
            for (int j = 1; j <= 2; j++) {
                System.out.println("  Innere Schleife: j = " + j);
            }
        }
    }
}

Ausgabe:

Äußere Schleife: i = 1
  Innere Schleife: j = 1
  Innere Schleife: j = 2
Äußere Schleife: i = 2
  Innere Schleife: j = 1
  Innere Schleife: j = 2
Äußere Schleife: i = 3
  Innere Schleife: j = 1
  Innere Schleife: j = 2

📋 Beispiel 2: Multiplikationstabelle (1-10)

java
public class VerschachteltBeispiel2 {
    public static void main(String[] args) {
        System.out.println("Multiplikationstabelle:");
        
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                System.out.printf("%4d", i * j);  // 4 Zeichen breit
            }
            System.out.println();  // Zeilenumbruch nach jeder Zeile
        }
    }
}

Ausgabe (Auszug):

   1   2   3   4   5   6   7   8   9  10
   2   4   6   8  10  12  14  16  18  20
   3   6   9  12  15  18  21  24  27  30
...

7.6 Schleifen-Übungsaufgaben

🏋️ Übung 1: Muster drucken (Sternchen-Dreieck)

Aufgabe: Drucke ein rechtwinkliges Dreieck aus Sternchen.

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

Lösung:

java
public class Uebung1 {
    public static void main(String[] args) {
        int zeilen = 5;
        
        for (int i = 1; i <= zeilen; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();  // Zeilenumbruch
        }
    }
}

🏋️ Übung 2: Summe berechnen (Gerade Zahlen 1-100)

Aufgabe: Berechne die Summe aller geraden Zahlen von 1 bis 100.

Lösung:

java
public class Uebung2 {
    public static void main(String[] args) {
        int summe = 0;
        
        for (int i = 2; i <= 100; i += 2) {
            summe += i;
        }
        
        System.out.println("Summe aller geraden Zahlen von 1 bis 100: " + summe);  // 2550
    }
}

🏋️ Übung 3: Zahlen raten Spiel

Aufgabe: Computer wählt eine Zufallszahl zwischen 1 und 100. Benutzer muss sie erraten. Nach jedem Versuch Hinweis: "Zu hoch" oder "Zu niedrig".

Lösung:

java
import java.util.Random;
import java.util.Scanner;

public class Uebung3 {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        
        int geheimzahl = random.nextInt(100) + 1;  // 1-100
        int versuche = 0;
        int rateversuch;
        
        System.out.println("=== Zahlenraten Spiel ===");
        System.out.println("Ich habe mir eine Zahl zwischen 1 und 100 gedacht.");
        
        do {
            System.out.print("Dein Tipp: ");
            rateversuch = scanner.nextInt();
            versuche++;
            
            if (rateversuch < geheimzahl) {
                System.out.println("Zu niedrig!");
            } else if (rateversuch > geheimzahl) {
                System.out.println("Zu hoch!");
            } else {
                System.out.println("Richtig! Du hast " + versuche + " Versuche gebraucht.");
            }
        } while (rateversuch != geheimzahl);
        
        scanner.close();
    }
}

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • for-Schleife (bekannte Wiederholungsanzahl)
  • while-Schleife (Bedingung vor Prüfung)
  • do...while-Schleife (mindestens einmal ausführen)
  • break und continue Schlüsselwörter
  • ✅ Verschachtelte Schleifen
  • ✅ Schleifen-Übungsaufgaben

💡 Merksatz für Anfänger

"Verwende for wenn du die Anzahl weißt, while wenn die Bedingung vorher geprüft werden muss, und do...while wenn mindestens einmal ausgeführt werden soll!"

🎯 Nächste Schritte

Im nächsten Kapitel lernst du:

  • Arrays (Kapitel 8)
  • Wie man mehrere Werte in einem Container speichert
  • Array-Definition, Zugriff, Durchlaufung
  • Häufige Array-Operationen (Maximum, Minimum, Summe, Suche)

Bereit für Arrays? Los geht's! 🚀


📚 Weiterführende Links:

💬 Fragen?
Hinterlasse einen Kommentar!

Frei für alle Anfänger