CodeGym /Kurse /JAVA 25 SELF /Klassischer switch: Syntax, Beispiele

Klassischer switch: Syntax, Beispiele

JAVA 25 SELF
Level 10 , Lektion 3
Verfügbar

1. Einleitung

Stellen Sie sich vor: Sie schreiben ein Programm für ein Café. Der Benutzer kann ein Getränk wählen, und Sie müssen auf diese Auswahl reagieren. Man könnte natürlich eine Menge if-else if-else verwenden, aber das sieht nicht besonders gut aus:

if (choice == 1) 
{
    System.out.println("Sie haben Espresso gewählt.");
} 
else if (choice == 2) 
{
    System.out.println("Sie haben Cappuccino gewählt.");
} 
else if (choice == 3) 
{
    System.out.println("Sie haben Latte gewählt.");
} 
else 
{
    System.out.println("Ein solches Getränk gibt es nicht.");
}

Zugegeben, das wirkt sperrig. Und wenn es 10 oder 20 Optionen gibt? Hier hilft der Operator switch, mit dem sich eine Auswahl aus vielen Varianten elegant und kompakt anhand des Werts einer Variablen umsetzen lässt.

Syntax des klassischen switch

Die Syntax von switch in Java sieht so aus:


switch (expression) 
{
    case value1:
        // Aktionen, wenn expression == value1
        break;
    case value2:
        // Aktionen, wenn expression == value2
        break;
    ...
    default:
        // Aktionen, wenn kein case zutrifft
        break;
}
Syntax des Operators switch in Java

Schlüsselelemente:

  • switch (expression) – ein Ausdruck, dessen Ergebnis mit jedem case verglichen wird.
  • case value: – eine Variante, mit der der Ausdruck verglichen wird.
  • break; – beendet die Ausführung des switch-Blocks (ansonsten – „Fall-through“ in den nächsten case).
  • default: – wird ausgeführt, wenn kein case zutrifft.

2. Beispiele für die Verwendung von switch

Beispiel 1: Klassiker – die Getränkeauswahl

Implementieren wir ein Menü für ein Café:

import java.util.Scanner;

public class CoffeeShop 
{
    public static void main(String[] args) 
    {
        Scanner console = new Scanner(System.in);

        System.out.println("Wählen Sie ein Getränk:");
        System.out.println("1 - Espresso");
        System.out.println("2 - Cappuccino");
        System.out.println("3 - Latte");
        int choice = console.nextInt();

        switch (choice) 
        {
            case 1:
                System.out.println("Sie haben Espresso gewählt.");
                break;
            case 2:
                System.out.println("Sie haben Cappuccino gewählt.");
                break;
            case 3:
                System.out.println("Sie haben Latte gewählt.");
                break;
            default:
                System.out.println("Ein solches Getränk gibt es nicht.");
                break;
        }
    }
}

Was passiert:

  • Der Benutzer gibt die Nummer des Getränks ein.
  • Der Wert der Variablen choice wird mit jedem case verglichen.
  • Bei Übereinstimmung wird der entsprechende Block ausgeführt, danach beendet break die Ausführung von switch.
  • Wenn keine Übereinstimmung vorliegt, wird default ausgeführt.

Beispiel 2: Umschalten anhand von Strings

Es gibt nicht allzu viele Typen, die man innerhalb von switch verwenden kann, aber Strings – die gehen! Das ist praktisch für Befehlsmenüs:

import java.util.Scanner;

public class CommandMenu 
{
    public static void main(String[] args) 
    {
        Scanner console = new Scanner(System.in);

        System.out.println("Geben Sie einen Befehl ein (start, stop, pause):");
        String command = console.nextLine();

        switch (command) 
        {
            case "start":
                System.out.println("Programmstart!");
                break;
            case "stop":
                System.out.println("Programm wird beendet.");
                break;
            case "pause":
                System.out.println("Pause.");
                break;
            default:
                System.out.println("Unbekannter Befehl.");
                break;
        }
    }
}

Achtung: der Vergleich von Strings in switch ist case-sensitiv! "Start" und "start" sind unterschiedliche Strings.

3. Welche Typen unterstützt der klassische switch?

Im klassischen switch kann man nur bestimmte Typen verwenden:

  • Primitive Ganzzahltypen: byte, short, char, int
  • Aufzählungstypen: enum (darüber sprechen wir in der nächsten Vorlesung)
  • Strings: String – der Vergleich ist case-sensitiv

Nicht erlaubt sind: boolean, float, double, Arrays, beliebige Objekte von Klassen (außer enum und String).

Beispiel mit char

char grade = 'B';

switch (grade) 
{
    case 'A':
        System.out.println("Ausgezeichnet!");
        break;
    case 'B':
        System.out.println("Gut.");
        break;
    case 'C':
        System.out.println("Befriedigend.");
        break;
    default:
        System.out.println("Versuchen Sie es erneut.");
        break;
}

4. Die Notwendigkeit von break: Was passiert, wenn man es vergisst?

Der häufigste Anfängerfehler ist, break; zu vergessen. Schauen wir, was passieren wird:

int day = 2;

switch (day) 
{
    case 1:
        System.out.println("Montag");
        break;
    case 2:
        System.out.println("Dienstag");
    case 3:
        System.out.println("Mittwoch");
        break;
    default:
        System.out.println("Unbekannter Tag");
        break;
}

Ergebnis:

Dienstag
Mittwoch

Warum? Weil nach case 2 kein break steht, und die Ausführung „durchfällt“ in den nächsten case (das nennt man fall-through). Manchmal ist das nützlich, aber meistens – ein Fehler.

5. Gruppierung von case: wenn mehrere Varianten gleiches Verhalten haben

Wenn für mehrere Werte dasselbe Verhalten benötigt wird, kann man sie direkt hintereinander schreiben:

int month = 1;

switch (month) 
{
    case 12:
    case 1:
    case 2:
        System.out.println("Winter");
        break;
    case 3:
    case 4:
    case 5:
        System.out.println("Frühling");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println("Sommer");
        break;
    case 9:
    case 10:
    case 11:
        System.out.println("Herbst");
        break;
    default:
        System.out.println("Unbekannter Monat");
        break;
}

Hier gilt: wenn month12, 1 oder 2 ist, gibt das Programm "Winter" aus.

6. Vergleich: switch und if-else

Szenario if-else switch
Viele Varianten Lange Kette, schlechter lesbar Kurz, alle Fälle sind sofort sichtbar
Vergleich von Bereichen Möglich (if (x > 5 && x < 10)) Nicht möglich, nur konkrete Werte
Unterstützte Typen Beliebige Nur bestimmte (siehe oben)
Falle mit break Nein Ja, unbedingt auf break achten

7. Typische Fehler beim Arbeiten mit switch

Fehler Nr. 1: break vergessen
Der häufigste Grund für Bugs: break vergessen – und der Code führt nicht den case aus, den Sie erwarten.

Fehler Nr. 2: nicht unterstützter Typ
Sie versuchen, double, float oder boolean zu verwenden – der Compiler sagt „nicht erlaubt“.

Fehler Nr. 3: Strings mit unterschiedlicher Groß-/Kleinschreibung
Der Benutzer hat "Start" eingegeben, Sie erwarten "start" – der switch greift nicht. Bringen Sie Strings am besten vorher auf eine einheitliche Groß-/Kleinschreibung:

switch (command.toLowerCase()) 
{
    case "start":
        // ...
}

Fehler Nr. 4: Variable in case statt Konstante
In case sind nur Konstanten erlaubt. Wird eine Variable verwendet, führt das zu einem Compilerfehler.

Fehler Nr. 5: doppelte case
Zwei identische case-Werte – das verzeiht der Compiler nicht.

1
Aufgabe
JAVA 25 SELF, Level 10, Lektion 3
Gesperrt
Intelligentes Büro: Wochentag bestimmen 📅
Intelligentes Büro: Wochentag bestimmen 📅
1
Aufgabe
JAVA 25 SELF, Level 10, Lektion 3
Gesperrt
Roboter-Bedienfeld 🤖
Roboter-Bedienfeld 🤖
1
Aufgabe
JAVA 25 SELF, Level 10, Lektion 3
Gesperrt
Saisonaler Monatsführer 🍂
Saisonaler Monatsführer 🍂
1
Aufgabe
JAVA 25 SELF, Level 10, Lektion 3
Gesperrt
Taschenrechner ➕
Taschenrechner ➕
Kommentare (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
26 November 2025
Nicht erlaubt ist auch long-Datentyp bei einem switch-case