- 1 Section
- 10 Lessons
- unbegrenzt
- Java Grundlagen10
- 1.1Java-Grundlagen: JDK, JVM, erstes Programm
- 1.2Variablen, Datentypen und Operatoren
- 1.3Kontrollstrukturen: if, else, switch
- 1.4Schleifen: for, while, do-while
- 1.5Arrays und Strings
- 1.6Methoden: Definition, Parameter, Rückgabe
- 1.7Fehlerbehandlung: try-catch-finally, Exceptions
- 1.8Einstieg in Klassen und Objekte
- 1.9Eingabe und Ausgabe: Scanner, System.out
- 1.10Praxisprojekt: Kleines Java-Programm von A bis Z
Kontrollstrukturen: if, else, switch
Bisher liefen unsere Programme von oben nach unten – Zeile für Zeile, ohne Abzweigungen. Jetzt wird es spannend: mit Kontrollstrukturen kann unser Programm Entscheidungen treffen und je nach Situation unterschiedliche Wege gehen. „Wenn der Benutzer älter als 18 ist, darf er kaufen. Sonst nicht." – genau solche Entscheidungen sind das Brot-und-Butter-Geschäft jedes Programms.
Die Analogie: Stell dir dein Programm wie eine Straße vor. Bisher gab es nur eine Strecke. Mit Kontrollstrukturen kommen Kreuzungen rein: an einer Kreuzung steht ein Schild (eine Bedingung), und je nachdem ob die Bedingung wahr oder falsch ist, gehst du nach links oder rechts. Java hat zwei Arten von Verzweigungs-Strukturen: if/else (für beliebige Bedingungen) und switch (für viele Vergleiche mit derselben Variable).
1) Die einfache if-Abfrage
Die einfachste Verzweigung ist if: „Wenn diese Bedingung wahr ist, führe diesen Code aus." Die Bedingung steht in runden Klammern und muss einen boolean-Wert ergeben (siehe Datentypen). Der Code-Block der ausgeführt werden soll, steht in geschweiften Klammern. Das visualisierte Schema:
(), der Code-Block in geschweifte Klammern {}. Auch wenn der Block nur eine Zeile hat, sind die geschweiften Klammern dringend empfohlen – sonst sind Verschachtelungen schwer zu lesen und es entstehen leicht Fehler.2) if-else und else-if-Ketten – die interaktive Sandbox
Oft willst du nicht nur „mache X wenn Bedingung wahr ist", sondern auch „mache Y wenn nicht". Das ist else. Brauchst du mehrere Stufen, kombinierst du else if zu einer Kette. Hier eine Sandbox: gib eine Note ein (1-6) und sieh welche Verzweigung genommen wird. Geänderte Eingabe ändert die Bewertung sofort:
else am Ende fängt alle Fälle ab die keine vorherige Bedingung erfüllt haben. Beachte: in der Bedingung note <= 1 reicht es zu prüfen ob „kleiner gleich 1" – wir müssen nicht zusätzlich „größer 0" prüfen weil die vorigen Conditions fail-through verhindern... oder doch? Tatsächlich macht die Reihenfolge hier den Unterschied – probier mal note=0 aus.3) Verschachtelte if-Anweisungen
Innerhalb eines if-Blocks kann ein weiteres if stehen. Das nennt man verschachtelte if-Anweisungen. Beispiel: „Wenn der Benutzer eingeloggt ist UND wenn er Admin ist, zeige das Admin-Menü." In Code:
if (istAdmin) {
System.out.println("Admin-Menü");
} else {
System.out.println("Benutzer-Menü");
}
} else {
System.out.println("Bitte einloggen");
}
Alternativ kann man oft die logischen Operatoren aus Lektion 2 nutzen um Verschachtelung zu vermeiden:
System.out.println("Admin-Menü");
} else if (istEingeloggt) {
System.out.println("Benutzer-Menü");
} else {
System.out.println("Bitte einloggen");
}
4) switch – die elegante Alternative bei vielen Vergleichen
Wenn du dieselbe Variable gegen viele konkrete Werte vergleichen musst (z.B. „Welcher Wochentag? Welche Note? Welche Auswahl im Menü?"), wird eine if-else-Kette schnell unübersichtlich. Hier kommt switch ins Spiel. Probier es in der Sandbox aus: klicke einen Tag-Wert und sieh welcher case zutrifft:
break würde Java nach dem Match einfach weiter durch die folgenden cases „durchfallen" (fall-through) – das ist meistens NICHT was du willst. Ab Java 14 gibt es die modernere Syntax mit Pfeil (case 1 -> "Mo";) die kein break braucht – aber das alte mit break siehst du noch häufig. default fängt alle Werte ab die keinen case treffen (wie else beim if).5) Der Ternäre Operator: Kurzform für einfaches if/else
Für ganz einfache if/else-Konstruktionen die nur einen Wert zurückgeben gibt es eine Kurzform mit Fragezeichen und Doppelpunkt – den ternären Operator. Aufbau: bedingung ? wertWennTrue : wertWennFalse. Beispiel:
int max;
if (a > b) max = a;
else max = b;
// Kurzform mit Ternär-Operator:
int max = (a > b) ? a : b;
Der ternäre Operator macht den Code kürzer aber nicht immer lesbarer. Faustregel: für einfache Wertzuweisungen ja, für komplexe Verschachtelungen lieber normales if/else.
Zusammenfassung
Kontrollstrukturen lenken den Programmfluss. if (bedingung) { ... } führt Code aus wenn Bedingung true ist. else für den Sonst-Fall, else if für Ketten. Bedingungen sind boolean-Ausdrücke (siehe Operatoren). switch ist die elegante Alternative wenn eine Variable gegen viele konkrete Werte verglichen wird – break nicht vergessen! Verschachteln möglich aber besser logische Operatoren nutzen (&&, ||). Ternärer Operator ? : als Kurzform für einfache Zuweisungen.
