if/else Bedingungen
Lerne, wie du mit if, else if und else Entscheidungen in Java programmierst. Mit Pattern Matching, verschachtelten Bedingungen und praktischen Beispielen.
if/else Bedingungen in Java
Programme muessen Entscheidungen treffen: Ist der Benutzer eingeloggt? Ist die Zahl gerade? Hat der Schueler bestanden? Mit if/else kannst du deinen Code in verschiedene Pfade verzweigen lassen — je nachdem, welche Bedingung zutrifft.
Die Grundlagen: if
Die einfachste Form: Fuehre Code nur aus, wenn eine Bedingung wahr ist.
int alter = 20;
if (alter >= 18) {
System.out.println("Du bist volljaehrig!");
}
Aufbau
if (bedingung) {
// Code, der ausgefuehrt wird, wenn bedingung == true
}
Wichtig: Die Bedingung in den runden Klammern muss ein boolean sein!
// RICHTIG:
if (alter >= 18) { }
if (true) { }
if (name.equals("Max")) { }
// FALSCH (anders als in Python/JavaScript!):
// if (1) { } // Fehler! 1 ist kein boolean
// if ("text") { } // Fehler!
if-else
Wenn die Bedingung nicht zutrifft, soll etwas anderes passieren:
int alter = 15;
if (alter >= 18) {
System.out.println("Du darfst Auto fahren.");
} else {
System.out.println("Du musst noch warten.");
System.out.println("Noch " + (18 - alter) + " Jahre!");
}
Ausgabe:
Du musst noch warten.
Noch 3 Jahre!
if - else if - else
Fuer mehrere Bedingungen:
double note = 2.3;
if (note <= 1.5) {
System.out.println("Sehr gut!");
} else if (note <= 2.5) {
System.out.println("Gut!");
} else if (note <= 3.5) {
System.out.println("Befriedigend");
} else if (note <= 4.0) {
System.out.println("Ausreichend");
} else {
System.out.println("Nicht bestanden");
}
Java prueft die Bedingungen von oben nach unten und fuehrt den ersten zutreffenden Block aus.
Vergleich mit Python
# Python: elif
if note <= 1.5:
print("Sehr gut!")
elif note <= 2.5:
print("Gut!")
else:
print("Befriedigend oder schlechter")
// Java: else if (zwei Woerter)
if (note <= 1.5) {
System.out.println("Sehr gut!");
} else if (note <= 2.5) {
System.out.println("Gut!");
} else {
System.out.println("Befriedigend oder schlechter");
}
Verschachtelte Bedingungen
Du kannst if-Bloecke ineinander verschachteln:
var alter = 20;
var hatFuehrerschein = true;
if (alter >= 18) {
if (hatFuehrerschein) {
System.out.println("Du darfst fahren!");
} else {
System.out.println("Erst Fuehrerschein machen!");
}
} else {
System.out.println("Du bist noch zu jung.");
}
Besser: Logische Operatoren verwenden
Oft sind verschachtelte ifs mit && und || lesbarer:
if (alter >= 18 && hatFuehrerschein) {
System.out.println("Du darfst fahren!");
} else if (alter >= 18 && !hatFuehrerschein) {
System.out.println("Erst Fuehrerschein machen!");
} else {
System.out.println("Du bist noch zu jung.");
}
Bedingungen mit Strings
Strings vergleichst du immer mit equals(), nicht mit ==:
var eingabe = "ja";
if (eingabe.equals("ja")) {
System.out.println("Du hast zugestimmt!");
} else if (eingabe.equalsIgnoreCase("nein")) {
System.out.println("Du hast abgelehnt.");
} else {
System.out.println("Ungueltige Eingabe.");
}
null-sichere Vergleiche
String name = null;
// GEFAEHRLICH: NullPointerException!
// if (name.equals("Max")) { }
// SICHER: Konstante zuerst
if ("Max".equals(name)) {
System.out.println("Hallo Max!");
}
// Oder: null-Pruefung zuerst
if (name != null && name.equals("Max")) {
System.out.println("Hallo Max!");
}
Pattern Matching mit instanceof (Java 16+)
Modernes Java kann Typ-Pruefungen und Casting in einem Schritt erledigen:
Object wert = "Hallo Welt";
// Alt (vor Java 16):
if (wert instanceof String) {
String s = (String) wert;
System.out.println("String mit Laenge: " + s.length());
}
// Modern (Java 16+):
if (wert instanceof String s) {
System.out.println("String mit Laenge: " + s.length());
}
// Mit zusaetzlicher Bedingung:
if (wert instanceof String s && s.length() > 5) {
System.out.println("Langer String: " + s);
}
Der ternaere Operator
Fuer einfache if-else-Ausdruecke gibt es eine Kurzform:
// Statt:
String status;
if (alter >= 18) {
status = "Erwachsen";
} else {
status = "Kind";
}
// Schreibe:
var status = (alter >= 18) ? "Erwachsen" : "Kind";
Aber: Verwende den ternaeren Operator nur fuer einfache Ausdruecke. Bei komplexer Logik ist if-else lesbarer.
Haeufige Muster
Eingabe-Validierung
import java.util.Scanner;
var scanner = new Scanner(System.in);
System.out.print("Gib eine Zahl zwischen 1 und 10 ein: ");
var zahl = scanner.nextInt();
if (zahl < 1 || zahl > 10) {
System.out.println("Ungueltige Eingabe!");
} else {
System.out.println("Gueltig: " + zahl);
}
Bereichs-Pruefung
var temperatur = 28.5;
if (temperatur < 0) {
System.out.println("Eiskalt! Gut einpacken.");
} else if (temperatur < 10) {
System.out.println("Kalt. Jacke anziehen.");
} else if (temperatur < 20) {
System.out.println("Angenehm. Leichte Jacke.");
} else if (temperatur < 30) {
System.out.println("Warm. T-Shirt reicht.");
} else {
System.out.println("Heiss! Ab ins Freibad!");
}
Login-Pruefung
var benutzername = "admin";
var passwort = "geheim123";
var versuche = 0;
var maxVersuche = 3;
var scanner = new Scanner(System.in);
System.out.print("Benutzername: ");
var eingabeName = scanner.nextLine();
System.out.print("Passwort: ");
var eingabePasswort = scanner.nextLine();
if (eingabeName.equals(benutzername) && eingabePasswort.equals(passwort)) {
System.out.println("Willkommen, " + benutzername + "!");
} else if (!eingabeName.equals(benutzername)) {
System.out.println("Benutzername nicht gefunden.");
} else {
System.out.println("Falsches Passwort.");
}
Haeufige Fehler
1. Zuweisung statt Vergleich
int x = 5;
// FEHLER (in Java zum Glueck ein Kompilierfehler bei int):
// if (x = 10) { } // Zuweisung, nicht Vergleich!
// RICHTIG:
if (x == 10) { } // Vergleich
2. Unnoetige Vergleiche mit boolean
boolean istAktiv = true;
// SCHLECHT:
if (istAktiv == true) { }
// GUT:
if (istAktiv) { }
// SCHLECHT:
if (istAktiv == false) { }
// GUT:
if (!istAktiv) { }
3. Unreachable Code
// SCHLECHT: Der else-Teil wird nie erreicht
if (x > 5) {
return "Gross";
} else if (x <= 5) {
return "Klein";
} else {
return "Nie erreicht!"; // Toter Code
}
Uebungen
Uebung 1: Altersklassen
Schreibe ein Programm, das das Alter einliest und die Altersklasse ausgibt: Kind (0-12), Jugendlicher (13-17), Erwachsener (18-64), Senior (65+).
Uebung 2: Taschenrechner
Schreibe einen einfachen Taschenrechner: Lies zwei Zahlen und einen Operator (+, -, *, /) ein und berechne das Ergebnis. Behandle auch den Fall “Division durch 0”.
Uebung 3: Dreieck-Pruefung
Schreibe ein Programm, das drei Seitenlaengen einliest und prueft, ob sie ein gueltiges Dreieck bilden (Dreiecksungleichung: die Summe zweier Seiten muss groesser als die dritte sein).
Uebung 4: Schaltjahr
Schreibe ein Programm, das prueft, ob ein eingegebenes Jahr ein Schaltjahr ist. Regeln: Durch 4 teilbar, ABER nicht durch 100, AUSSER durch 400.
Was kommt als Naechstes?
In der naechsten Lektion lernst du switch Statements kennen — eine elegante Alternative zu langen if-else-Ketten, besonders mit den modernen Switch Expressions von Java 21.
Zusammenfassung
iffuehrt Code aus, wenn die Bedingungtrueistelse ifprueft weitere Bedingungen der Reihe nachelsefaengt den Standardfall ab- Bedingungen muessen immer ein
booleansein (nicht1,"", etc.) - Strings vergleiche immer mit
equals(), nicht mit== - Pattern Matching (
instanceof String s) spart Casting - Der ternaere Operator (
? :) ist eine Kurzform fuer einfache if-else - Nutze logische Operatoren (
&&,||) statt verschachtelter ifs
Pro-Tipp: Wenn du mehr als 3-4 else-if-Bloecke hast, ist ein switch-Statement oft die bessere Wahl. Und wenn du viele verschachtelte ifs hast, ueberlege, ob du die Logik in separate Methoden auslagern kannst — das macht den Code viel lesbarer. In IntelliJ kannst du mit Alt + Enter auf einem if-Statement oft automatisch in ein switch umwandeln!