Zum Inhalt springen
Java Anfänger 25 min

for-Schleifen

Alles über for-Schleifen in Java: Klassische for-Schleife, enhanced for-each, verschachtelte Schleifen und praktische Beispiele.

Aktualisiert:

for-Schleifen in Java

Schleifen gehoeren zu den wichtigsten Konzepten in der Programmierung. Mit ihnen kannst du Code wiederholt ausfuehren, ohne ihn mehrfach schreiben zu muessen. Die for-Schleife ist dabei der vielseitigste Schleifen-Typ in Java.

Die klassische for-Schleife

for (int i = 0; i < 5; i++) {
    System.out.println("Durchlauf " + i);
}

Ausgabe:

Durchlauf 0
Durchlauf 1
Durchlauf 2
Durchlauf 3
Durchlauf 4

Aufbau

for (Initialisierung; Bedingung; Update) {
    // Schleifenkoerper
}
TeilBeschreibungBeispiel
InitialisierungWird einmal am Anfang ausgefuehrtint i = 0
BedingungWird vor jedem Durchlauf gepruefti < 5
UpdateWird nach jedem Durchlauf ausgefuehrti++

Ablauf visualisiert

1. Initialisierung: i = 0
2. Bedingung pruefen: i < 5? --> Ja
3. Koerper ausfuehren
4. Update: i++
5. Zurueck zu Schritt 2
...bis Bedingung false ist

Variationen

Rueckwaerts zaehlen

for (int i = 10; i > 0; i--) {
    System.out.println(i);
}
System.out.println("Start!");

In Schritten zaehlen

// Nur gerade Zahlen
for (int i = 0; i <= 20; i += 2) {
    System.out.print(i + " ");
}
// Ausgabe: 0 2 4 6 8 10 12 14 16 18 20

Mehrere Variablen

for (int i = 0, j = 10; i < j; i++, j--) {
    System.out.println("i=" + i + ", j=" + j);
}

Ausgabe:

i=0, j=10
i=1, j=9
i=2, j=8
i=3, j=7
i=4, j=6

Die enhanced for-Schleife (for-each)

Fuer das Durchlaufen von Arrays und Collections gibt es die for-each-Schleife:

String[] namen = {"Max", "Anna", "Leo", "Julia"};

for (String name : namen) {
    System.out.println("Hallo " + name + "!");
}

Ausgabe:

Hallo Max!
Hallo Anna!
Hallo Leo!
Hallo Julia!

Mit var

var zahlen = List.of(1, 2, 3, 4, 5);

for (var zahl : zahlen) {
    System.out.println(zahl * zahl);
}

Vergleich: klassisch vs. for-each

var farben = new String[]{"Rot", "Gruen", "Blau"};

// Klassisch (mit Index)
for (int i = 0; i < farben.length; i++) {
    System.out.println(i + ": " + farben[i]);
}

// For-each (kein Index)
for (var farbe : farben) {
    System.out.println(farbe);
}

Verwende for-each, wenn du keinen Index brauchst. Es ist kuerzer und sicherer (kein ArrayIndexOutOfBoundsException-Risiko).

Vergleich mit Python

# Python: for-in
namen = ["Max", "Anna", "Leo"]
for name in namen:
    print(f"Hallo {name}!")

# Mit Index
for i, name in enumerate(namen):
    print(f"{i}: {name}")
// Java: for-each
var namen = List.of("Max", "Anna", "Leo");
for (var name : namen) {
    System.out.println("Hallo " + name + "!");
}

// Mit Index: klassische for-Schleife
for (int i = 0; i < namen.size(); i++) {
    System.out.printf("%d: %s%n", i, namen.get(i));
}

break und continue

break — Schleife vorzeitig beenden

for (int i = 1; i <= 100; i++) {
    if (i == 5) {
        System.out.println("Gefunden bei " + i);
        break; // Schleife sofort beenden
    }
    System.out.println("Suche bei " + i);
}

Ausgabe:

Suche bei 1
Suche bei 2
Suche bei 3
Suche bei 4
Gefunden bei 5

continue — Durchlauf ueberspringen

for (int i = 1; i <= 10; i++) {
    if (i % 3 == 0) {
        continue; // Rest ueberspringen, naechster Durchlauf
    }
    System.out.print(i + " ");
}
// Ausgabe: 1 2 4 5 7 8 10

Verschachtelte Schleifen

Schleifen koennen ineinander verschachtelt werden:

Multiplikationstabelle

for (int i = 1; i <= 10; i++) {
    for (int j = 1; j <= 10; j++) {
        System.out.printf("%4d", i * j);
    }
    System.out.println(); // Neue Zeile
}

Ausgabe:

   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
   ...

Muster zeichnen

int groesse = 5;

for (int i = 1; i <= groesse; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("* ");
    }
    System.out.println();
}

Ausgabe:

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

Break mit Labels

Bei verschachtelten Schleifen kannst du mit Labels die aeussere Schleife verlassen:

aussen:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i * j > 6) {
            System.out.println("Abbruch bei i=" + i + ", j=" + j);
            break aussen; // Bricht die AEUSSERE Schleife ab
        }
    }
}

Praktische Beispiele

Summe berechnen

var summe = 0;
for (int i = 1; i <= 100; i++) {
    summe += i;
}
System.out.println("Summe 1-100: " + summe); // 5050

Fibonacci-Zahlen

int n = 15;
long a = 0, b = 1;

System.out.print("Fibonacci: ");
for (int i = 0; i < n; i++) {
    System.out.print(a + " ");
    long temp = a + b;
    a = b;
    b = temp;
}
// Ausgabe: Fibonacci: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Primzahl-Pruefung

int zahl = 29;
boolean istPrimzahl = zahl > 1;

for (int i = 2; i <= Math.sqrt(zahl); i++) {
    if (zahl % i == 0) {
        istPrimzahl = false;
        break;
    }
}

System.out.println(zahl + " ist Primzahl: " + istPrimzahl); // true

Array-Suche

var produkte = new String[]{"Laptop", "Maus", "Tastatur", "Monitor", "Headset"};
var suchbegriff = "Tastatur";
var gefunden = false;

for (int i = 0; i < produkte.length; i++) {
    if (produkte[i].equals(suchbegriff)) {
        System.out.println(suchbegriff + " gefunden an Position " + i);
        gefunden = true;
        break;
    }
}

if (!gefunden) {
    System.out.println(suchbegriff + " nicht gefunden!");
}

Typische Fehler

1. Off-by-one Error

var namen = new String[]{"Max", "Anna", "Leo"};

// FEHLER: ArrayIndexOutOfBoundsException
// for (int i = 0; i <= namen.length; i++) { }

// RICHTIG: < statt <=
for (int i = 0; i < namen.length; i++) {
    System.out.println(namen[i]);
}

2. Endlosschleife

// ENDLOSSCHLEIFE -- vergessen, i zu erhoehen!
// for (int i = 0; i < 10; ) {
//     System.out.println(i);
// }

// RICHTIG:
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

3. Variable ausserhalb des Scopes

for (int i = 0; i < 5; i++) {
    // i ist nur hier sichtbar
}
// System.out.println(i); // FEHLER! i existiert nicht mehr

Uebungen

Uebung 1: Zahlenreihe

Gib alle Zahlen von 1 bis 50 aus, die durch 3 oder 7 teilbar sind.

Uebung 2: Fakultaet

Berechne die Fakultaet einer eingegebenen Zahl (z.B. 5! = 5 * 4 * 3 * 2 * 1 = 120).

Uebung 3: Sternchen-Pyramide

Zeichne eine zentrierte Pyramide mit 7 Zeilen:

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

Uebung 4: FizzBuzz

Gib die Zahlen 1-100 aus. Fuer Vielfache von 3: “Fizz”, fuer 5: “Buzz”, fuer 15: “FizzBuzz”.

Was kommt als Naechstes?

In der naechsten Lektion lernst du while- und do-while-Schleifen — die Alternative zur for-Schleife, wenn du nicht weisst, wie oft eine Schleife laufen soll.

Zusammenfassung

  • Die klassische for-Schleife hat drei Teile: Initialisierung, Bedingung, Update
  • Die for-each-Schleife (for (var x : collection)) ist ideal fuer Arrays und Collections
  • break beendet die Schleife, continue ueberspringt den Rest des Durchlaufs
  • Verschachtelte Schleifen sind moeglich, aber achte auf Performance
  • Labels erlauben break/continue fuer aeussere Schleifen
  • Achte auf Off-by-one-Errors (< vs. <=)

Pro-Tipp: In IntelliJ kannst du fori + Tab tippen, um eine for-Schleife zu generieren, oder iter + Tab fuer eine for-each-Schleife. Das spart viel Tipparbeit! Und wenn du eine for-Schleife mit einer Collection siehst, pruefe, ob du sie durch Stream-Operationen wie .forEach(), .filter() oder .map() ersetzen kannst — das ist oft eleganter.

Zurück zum Java Kurs