Skip to content

Switch-Case & For-Schleife (2025-09-15 · WED)


FOR LOOP (for-Schleife)

Was ist eine for-Schleife?

Eine for-Schleife ist eine kopfgesteuerte Schleife.

Sie wird verwendet, wenn: - die Anzahl der Wiederholungen bekannt ist - ein Zähler benötigt wird - eine Sequenz von Zahlen durchlaufen werden soll


Syntax

for (Initialisierung; Bedingung; Veränderung) {
    // Anweisungen
}

Beispiel:

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

Bedeutung: - int i = 0 → Startwert - i < 5 → Abbruchbedingung - i++ → Schrittweite (i = i + 1)


Wofür wird sie genutzt?

  • Zählerschleifen
  • Durchlaufen von Arrays oder Listen
  • Wiederholte Berechnungen
  • Tabellen, Matrizen
  • Algorithmische Muster

Vorwärts zählen

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

Rückwärts zählen

for (int i = 5; i >= 1; i--) {
    System.out.println(i);
}

Schritte überspringen (Schrittweite verändern)

In Zweierschritten

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

Rückwärts in Zweierschritten

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

Dauerschleife (Endlosschleife)

for (;;) {
    System.out.println("Läuft endlos");
}

Oder:

for (int i = 0; true; i++) {
    System.out.println(i);
}

⚠ Nur mit Abbruchbedingung sinnvoll (z. B. break).


Vorteile der for-Schleife

  • Kompakt
  • Lesbar
  • Zähler klar definiert
  • Weniger Fehleranfällig als while bei Zählerschleifen

Nachteile

  • Weniger flexibel bei komplexen Abbruchbedingungen
  • Für unbekannte Wiederholungen oft ungeeignet

ÜBUNG 1 – SumUp

Aufgabe

Berechne die Summe von 1 bis 100.


Lösung

public class SumUp {
    public static void main(String[] args) {

        int summe = 0;

        for (int i = 1; i <= 100; i++) {
            summe += i;
        }

        System.out.println("Summe: " + summe);
    }
}

Ergebnis:

Summe: 5050


Erweiterung – Zwischenergebnisse

public class SumUp {
    public static void main(String[] args) {

        int summe = 0;

        for (int i = 1; i <= 100; i++) {
            int alt = summe;
            summe += i;
            System.out.println(alt + " + " + i + " = " + summe);
        }

        System.out.println("Summe: " + summe);
    }
}

ÜBUNG 2 – EvenOdd

public class EvenOdd {
    public static void main(String[] args) {

        for (int i = 1; i <= 20; i++) {

            if (i % 2 == 0) {
                System.out.println(i + " ist gerade");
            } else {
                System.out.println(i + " ist ungerade");
            }
        }
    }
}

Kernlogik: - i % 2 == 0 → gerade - sonst → ungerade


ÜBUNG 3 – FizzBuzz

public class FizzBuzz {
    public static void main(String[] args) {

        for (int i = 1; i <= 30; i++) {

            if (i % 15 == 0) {
                System.out.println("FizzBuzz");
            } else if (i % 3 == 0) {
                System.out.println("Fizz");
            } else if (i % 5 == 0) {
                System.out.println("Buzz");
            } else {
                System.out.println(i);
            }
        }
    }
}

Wichtig: - Erst % 15 prüfen! - Sonst würden 15, 30 nur als Fizz erkannt.


FizzBuzz – Erweiterung 1 (Benutzereingabe)

import java.util.Scanner;

public class FizzBuzz {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("Obergrenze eingeben: ");
        int max = sc.nextInt();

        for (int i = 1; i <= max; i++) {

            if (i % 15 == 0) {
                System.out.println("FizzBuzz");
            } else if (i % 3 == 0) {
                System.out.println("Fizz");
            } else if (i % 5 == 0) {
                System.out.println("Buzz");
            } else {
                System.out.println(i);
            }
        }

        sc.close();
    }
}

FizzBuzz – Erweiterung 2 (Benutzerdefinierte Regeln)

import java.util.Scanner;

public class FizzBuzz {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("Fizz-Zahl: ");
        int fizz = sc.nextInt();

        System.out.print("Buzz-Zahl: ");
        int buzz = sc.nextInt();

        if (fizz == 0 || buzz == 0) {
            System.out.println("Keine Teilung durch 0 erlaubt!");
            return;
        }

        System.out.print("Obergrenze: ");
        int max = sc.nextInt();

        for (int i = 1; i <= max; i++) {

            if (i % fizz == 0 && i % buzz == 0) {
                System.out.println("FizzBuzz");
            } else if (i % fizz == 0) {
                System.out.println("Fizz");
            } else if (i % buzz == 0) {
                System.out.println("Buzz");
            } else {
                System.out.println(i);
            }
        }

        sc.close();
    }
}

Kernaussagen

  • for = kopfgesteuerte Schleife
  • Ideal bei bekannter Wiederholungsanzahl
  • Schrittweite frei definierbar
  • Endlosschleifen möglich
  • % (Modulo) ist zentral für Teilbarkeitslogik
  • Reihenfolge der Bedingungen ist entscheidend