EMZETT.
Login

Kurz: Im Kopf stehen Start, Bedingung und Schritt. Die Variable i gilt nur in der Schleife.

Teil des Kurses Java

Kapitel 7 von 22 im Kurs Java. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

for

public class Zaehlen {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.print(i + " ");
        }
        System.out.println();
        int summe = 0;
        for (int i = 1; i <= 100; i++) summe += i;
        System.out.println(summe);
        for (int i = 10; i > 0; i -= 3) System.out.print(i + " ");
        System.out.println();
    }
}

Ausgabe:

1 2 3 4 5
5050
10 7 4 1

Im Kopf stehen Start, Bedingung und Schritt. Die Variable i gilt nur in der Schleife.

while und do-while

public class Bedingt {
    public static void main(String[] args) {
        int n = 1;
        while (n < 100) n *= 2;
        System.out.println(n);
 
        int versuche = 0;
        do {
            versuche++;
        } while (versuche < 3);                // läuft mindestens einmal
        System.out.println(versuche);
    }
}

Ausgabe:

128
3

Erweiterte for-Schleife (for-each)

Für Arrays und Collections ist for-each die Standardwahl:

import java.util.List;
 
public class Jeder {
    public static void main(String[] args) {
        String[] farben = {"rot", "grün", "blau"};
        for (String f : farben) System.out.print(f + " ");
        System.out.println();
        List<Integer> zahlen = List.of(4, 8, 15);
        int s = 0;
        for (int z : zahlen) s += z;
        System.out.println(s);
        for (char c : "Java".toCharArray()) System.out.print(c + "-");
        System.out.println();
    }
}

Ausgabe:

rot grün blau
27
J-a-v-a-

break, continue und Marken

public class Sprung {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) continue;     // gerade überspringen
            if (i > 7) break;             // abbrechen
            System.out.print(i + " ");
        }
        System.out.println();
 
        aussen:
        for (int a = 1; a < 10; a++) {
            for (int b = 1; b < 10; b++) {
                if (a * b == 42) {
                    System.out.println(a + " * " + b);
                    break aussen;         // beide Schleifen verlassen
                }
            }
        }
    }
}

Ausgabe:

1 3 5 7
6 * 7

Verschachtelte Schleifen

public class Tabelle {
    public static void main(String[] args) {
        for (int zeile = 1; zeile <= 4; zeile++) {
            for (int spalte = 1; spalte <= 5; spalte++) {
                System.out.printf("%4d", zeile * spalte);
            }
            System.out.println();
        }
        for (int i = 1; i <= 4; i++) System.out.println(" ".repeat(4 - i) + "*".repeat(2 * i - 1));
    }
}

Ausgabe:

1   2   3   4   5
   2   4   6   8  10
   3   6   9  12  15
   4   8  12  16  20
   *
  ***
 *****
*******

Typische Algorithmen

public class Algos {
    public static void main(String[] args) {
        int[] z = {5, 3, 9, 1, 7};
        int max = z[0], min = z[0], summe = 0;
        for (int x : z) {
            if (x > max) max = x;
            if (x < min) min = x;
            summe += x;
        }
        System.out.println("max " + max + ", min " + min + ", Schnitt " + (double) summe / z.length);
 
        // Primzahlen bis 30
        for (int n = 2; n <= 30; n++) {
            boolean prim = true;
            for (int t = 2; t * t <= n; t++) if (n % t == 0) { prim = false; break; }
            if (prim) System.out.print(n + " ");
        }
        System.out.println();
 
        // FizzBuzz
        for (int i = 1; i <= 15; i++) {
            System.out.print((i % 15 == 0 ? "FizzBuzz" : i % 3 == 0 ? "Fizz" : i % 5 == 0 ? "Buzz" : i) + " ");
        }
        System.out.println();
    }
}

Ausgabe:

max 9, min 1, Schnitt 5.0
2 3 5 7 11 13 17 19 23 29
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz

Achtung

Endlosschleifen entstehen, wenn die Bedingung nie false wird (while (true) ohne break, oder eine vergessene Änderung der Schleifenvariable).

Merke

  • for für feste Anzahl, while für Bedingungen, do-while läuft mindestens einmal
  • for (Typ x : sammlung) ist die einfachste Art, über Arrays und Listen zu laufen
  • break beendet, continue überspringt; Marken verlassen mehrere Schleifen
  • Verschachtelte Schleifen bauen Tabellen und Muster

Übungsaufgabe

Gib das kleine Einmaleins (1 bis 10) als Tabelle aus und berechne die Summe aller geraden Zahlen von 1 bis 100.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Bedingungen: if und switch

Weiter: Methoden

Alle Kapitel: Java im Überblick