Zum Inhalt springen
Java Anfänger 25 min

if/else Bedingungen

Lerne, wie du mit if, else if und else Entscheidungen in Java programmierst. Mit Pattern Matching, verschachtelten Bedingungen und praktischen Beispielen.

Aktualisiert:

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

  • if fuehrt Code aus, wenn die Bedingung true ist
  • else if prueft weitere Bedingungen der Reihe nach
  • else faengt den Standardfall ab
  • Bedingungen muessen immer ein boolean sein (nicht 1, "", 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!

Zurück zum Java Kurs