Skip to content

Kapitel 6: Bedingte Anweisungen (if, else, switch)

🎯 Lernziele

In diesem Kapitel lernst du:

  • Was Ablaufsteuerung ist
  • if-Anweisung (einfache Bedingung)
  • if...else-Anweisung (zwei Möglichkeiten)
  • if...else if...else-Anweisung (mehrere Möglichkeiten)
  • switch-Anweisung (für viele gleichwertige Optionen)
  • Übungsaufgaben zu Bedingungen

6.1 Was ist Ablaufsteuerung?

🚦 Warum brauchen wir Bedingungen?

Bisher wurde Code zeilenweise von oben nach unten ausgeführt. Aber oft wollen wir:

  • ✅ Code nur ausführen, wenn eine Bedingung wahr ist
  • ✅ Zwischen verschiedenen Optionen wählen
  • Wiederholungen machen (nächstes Kapitel)

📊 Beispiele aus dem Alltag

Wenn es regnet → Regenschirm mitnehmen
Sonst → Sonnenbrille aufsetzen

Wenn Note >= 90 → "Sehr gut"
Wenn Note >= 80 → "Gut"
Wenn Note >= 60 → "Befriedigend"
Sonst → "Nicht bestanden"

In Java nutzen wir dafür: if, else, switch

6.2 if-Anweisung (einfache Bedingung)

📝 Syntax

java
if (bedingung) {
    // Code-Block: Wird nur ausgeführt, wenn Bedingung wahr (true) ist
}

📋 Beispiel 1: Ist die Zahl positiv?

java
public class IfBeispiel1 {
    public static void main(String[] args) {
        int zahl = 10;
        
        if (zahl > 0) {
            System.out.println("Die Zahl ist positiv!");
        }
        
        System.out.println("Programm beendet.");
    }
}

Ausgabe:

Die Zahl ist positiv!
Programm beendet.

📋 Beispiel 2: Überprüfe ob volljährig

java
public class IfBeispiel2 {
    public static void main(String[] args) {
        int alter = 20;
        
        if (alter >= 18) {
            System.out.println("Du bist volljährig!");
            System.out.println("Du darfst wählen gehen.");
        }
    }
}

Ausgabe:

Du bist volljährig!
Du darfstest wählen gehen.

⚠️ Achtung: Geschweifte Klammern sind optional (aber empfohlen!)

java
// Ohne geschweifte Klammern (nur eine Anweisung)
if (alter >= 18)
    System.out.println("Volljährig!");

// Mit geschweiften Klammern (besser lesbar!)
if (alter >= 18) {
    System.out.println("Volljährig!");
}

→ Empfehlung: Immer geschweifte Klammern {} verwenden!

6.3 if...else-Anweisung (zwei Möglichkeiten)

📝 Syntax

java
if (bedingung) {
    // Wird ausgeführt, wenn Bedingung wahr (true) ist
} else {
    // Wird ausgeführt, wenn Bedingung falsch (false) ist
}

📋 Beispiel 1: Gerade oder ungerade Zahl?

java
public class IfElseBeispiel1 {
    public static void main(String[] args) {
        int zahl = 7;
        
        if (zahl % 2 == 0) {
            System.out.println("Die Zahl ist gerade.");
        } else {
            System.out.println("Die Zahl ist ungerade.");
        }
    }
}

Ausgabe:

Die Zahl ist ungerade.

📋 Beispiel 2: Passwort überprüfen

java
import java.util.Scanner;

public class IfElseBeispiel2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Bitte Passwort eingeben: ");
        String passwort = scanner.nextLine();
        
        if (passwort.equals("geheim123")) {
            System.out.println("Login erfolgreich!");
        } else {
            System.out.println("Falsches Passwort!");
        }
        
        scanner.close();
    }
}

6.4 if...else if...else-Anweisung (mehrere Möglichkeiten)

📝 Syntax

java
if (bedingung1) {
    // Wird ausgeführt, wenn Bedingung1 wahr ist
} else if (bedingung2) {
    // Wird ausgeführt, wenn Bedingung1 falsch und Bedingung2 wahr ist
} else if (bedingung3) {
    // Wird ausgeführt, wenn Bedingung1 & 2 falsch und Bedingung3 wahr ist
} else {
    // Wird ausgeführt, wenn alle Bedingungen falsch sind
}

📋 Beispiel 1: Notenbewertung

java
public class NotenBeispiel {
    public static void main(String[] args) {
        int punkte = 85;
        
        if (punkte >= 90) {
            System.out.println("Note: Sehr gut (1)");
        } else if (punkte >= 80) {
            System.out.println("Note: Gut (2)");
        } else if (punkte >= 70) {
            System.out.println("Note: Befriedigend (3)");
        } else if (punkte >= 60) {
            System.out.println("Note: Ausreichend (4)");
        } else {
            System.out.println("Note: Nicht bestanden (5)");
        }
    }
}

Ausgabe:

Note: Gut (2)

📋 Beispiel 2: Tageszeit bestimmen

java
public class TageszeitBeispiel {
    public static void main(String[] args) {
        int stunde = 14;
        
        if (stunde >= 6 && stunde < 12) {
            System.out.println("Guten Morgen!");
        } else if (stunde >= 12 && stunde < 18) {
            System.out.println("Guten Tag!");
        } else if (stunde >= 18 && stunde < 22) {
            System.out.println("Guten Abend!");
        } else {
            System.out.println("Gute Nacht!");
        }
    }
}

Ausgabe:

Guten Tag!

6.5 switch-Anweisung (für viele gleichwertige Optionen)

📝 Syntax

java
switch (ausdruck) {
    case wert1:
        // Code für wert1
        break;
    case wert2:
        // Code für wert2
        break;
    // ... weitere cases
    default:
        // Code, wenn kein case passt
}

🔍 Wichtig: break und default

  • break: Beendet das switch-Statement (sonst wird weiter ausgeführt!)
  • default: Wird ausgeführt, wenn kein case passt (wie else)

📋 Beispiel 1: Wochentag bestimmen

java
public class SwitchBeispiel1 {
    public static void main(String[] args) {
        int tag = 3;  // 1 = Montag, 2 = Dienstag, ...
        
        switch (tag) {
            case 1:
                System.out.println("Montag");
                break;
            case 2:
                System.out.println("Dienstag");
                break;
            case 3:
                System.out.println("Mittwoch");
                break;
            case 4:
                System.out.println("Donnerstag");
                break;
            case 5:
                System.out.println("Freitag");
                break;
            case 6:
                System.out.println("Samstag");
                break;
            case 7:
                System.out.println("Sonntag");
                break;
            default:
                System.out.println("Ungültiger Tag!");
        }
    }
}

Ausgabe:

Mittwoch

📋 Beispiel 2: Einfacher Taschenrechner (mit char)

java
import java.util.Scanner;

public class SwitchBeispiel2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Erste Zahl: ");
        double a = scanner.nextDouble();
        
        System.out.print("Operator (+, -, *, /): ");
        char operator = scanner.next().charAt(0);
        
        System.out.print("Zweite Zahl: ");
        double b = scanner.nextDouble();
        
        double ergebnis;
        
        switch (operator) {
            case '+':
                ergebnis = a + b;
                break;
            case '-':
                ergebnis = a - b;
                break;
            case '*':
                ergebnis = a * b;
                break;
            case '/':
                ergebnis = a / b;
                break;
            default:
                System.out.println("Ungültiger Operator!");
                return;
        }
        
        System.out.println("Ergebnis: " + ergebnis);
        scanner.close();
    }
}

⚠️ Achtung: Fall-through (Fehlt break?)

java
int zahl = 2;

switch (zahl) {
    case 1:
        System.out.println("Eins");
    case 2:
        System.out.println("Zwei");  // ← Wird ausgeführt
    case 3:
        System.out.println("Drei");  // ← Wird AUCH ausgeführt (Fall-through!)
        break;
    default:
        System.out.println("Andere");
}

Ausgabe (ohne break bei case 2):

Zwei
Drei

→ Immer break verwenden, um Fall-through zu verhindern!

✨ Neu in Java 14+: Enhanced Switch (Pfeilsyntax)

java
// Neue Syntax (Java 14+)
int tag = 3;

String tagesname = switch (tag) {
    case 1 -> "Montag";
    case 2 -> "Dienstag";
    case 3 -> "Mittwoch";
    case 4 -> "Donnerstag";
    case 5 -> "Freitag";
    case 6 -> "Samstag";
    case 7 -> "Sonntag";
    default -> "Ungültiger Tag";
};

System.out.println(tagesname);  // "Mittwoch"

Vorteile:

  • ✅ Kein break nötig
  • ✅ Kann einen Wert zurückgeben
  • ✅ Kürzere Schreibweise

6.6 Bedingungs-Anweisung: Übungsaufgaben

🏋️ Übung 1: Größte von drei Zahlen finden

Aufgabe: Schreibe ein Programm, das die größte von drei Zahlen findet.

Lösung:

java
public class Uebung1 {
    public static void main(String[] args) {
        int a = 10, b = 20, c = 15;
        int maximum;
        
        if (a >= b && a >= c) {
            maximum = a;
        } else if (b >= a && b >= c) {
            maximum = b;
        } else {
            maximum = c;
        }
        
        System.out.println("Die größte Zahl ist: " + maximum);  // 20
    }
}

🏋️ Übung 2: Schaltjahr überprüfen

Aufgabe: Ein Jahr ist ein Schaltjahr, wenn:

  • Es durch 4 teilbar ist, UND
  • Es NICHT durch 100 teilbar ist, ODER
  • Es durch 400 teilbar ist.

Lösung:

java
public class Uebung2 {
    public static void main(String[] args) {
        int jahr = 2024;
        boolean istSchaltjahr;
        
        if ((jahr % 4 == 0 && jahr % 100 != 0) || (jahr % 400 == 0)) {
            istSchaltjahr = true;
        } else {
            istSchaltjahr = false;
        }
        
        if (istSchaltjahr) {
            System.out.println(jahr + " ist ein Schaltjahr.");
        } else {
            System.out.println(jahr + " ist kein Schaltjahr.");
        }
    }
}

Ausgabe:

2024 ist ein Schaltjahr.

🏋️ Übung 3: Dreiecksart bestimmen

Aufgabe: Drei Seitenlängen a, b, c bilden:

  • Ein gleichseitiges Dreieck, wenn a == b == c
  • Ein gleichschenkliges Dreieck, wenn zwei Seiten gleich sind
  • Ein ungleichseitiges Dreieck, wenn alle Seiten verschieden sind

Lösung:

java
public class Uebung3 {
    public static void main(String[] args) {
        int a = 5, b = 5, c = 8;
        
        if (a == b && b == c) {
            System.out.println("Gleichseitiges Dreieck");
        } else if (a == b || a == c || b == c) {
            System.out.println("Gleichschenkliges Dreieck");
        } else {
            System.out.println("Ungleichseitiges Dreieck");
        }
    }
}

Ausgabe:

Gleichschenkliges Dreieck

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • if-Anweisung (einfache Bedingung)
  • if...else-Anweisung (zwei Möglichkeiten)
  • if...else if...else-Anweisung (mehrere Möglichkeiten)
  • switch-Anweisung (für viele gleichwertige Optionen)
  • ✅ Übungsaufgaben zu Bedingungen

💡 Merksatz für Anfänger

"Nutze if...else für Bereichsüberprüfungen (z.B. Noten), und switch für feste Werte (z.B. Menüauswahl)!"

🎯 Nächste Schritte

Im nächsten Kapitel lernst du:

  • Schleifen (for, while, do-while) (Kapitel 7)
  • Wie man Code mehrfach ausführt
  • break und continue in Schleifen
  • Verschachtelte Schleifen

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


📚 Weiterführende Links:

💬 Fragen?
Hinterlasse einen Kommentar!

Frei für alle Anfänger