switch in Java
Speichere die ganze Zahl 2 unter dem Namen choice. Baue ein switch, das case 1, case 2 und case 3 jeweils mit eigenem println auflistet, plus ein default. Wenn du kompilierst und ausführst, soll der Bildschirm mid zeigen — eine Zeile — weil case 2 passt. Das lehrt diese Seite: ein Wert, mehrere feste Labels, ein gewählter Pfad.
Ein Wert, mehrere feste Labels
Lege eine kleine Programmdatei namens Dial.java an. Die public class in der ersten Zeile muss zum Dateinamen passen: public class Dial. Lass keinen älteren Gate- oder Mint-Klassennamen in dieser Datei; der Compiler erwartet, dass Klassenname und Dateiname übereinstimmen.
Speichere in main eine ganze Zahl, bevor das switch kommt:
int choice = 2;
Diese Zeile druckt nichts. Sie gibt dem Namen choice nur den Wert 2. choice beginnt mit kleinem c. Um 2 stehen keine Anführungszeichen. Das Semikolon beendet die Speicherzeile. Danach kommt das switch selbst:
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
Das Wort switch steht kleingeschrieben. In den runden Klammern sitzt der Name choice — der Wert, den Java mit jedem case-Label vergleicht. Jede case-Zeile endet mit einem Doppelpunkt, nicht mit einem Semikolon. Unter case 2 steht System.out.println("mid"); dann das Wort break und ein Semikolon. Wenn choice den Wert 2 hält, betritt Java case 2, druckt mid, trifft break und verlässt das ganze switch. case 3 und default laufen in diesem Durchlauf nicht. Speichere die Datei, bevor du kompilierst.
Programm, das mid schreibt
Das ist die Version, die du zuerst kompilierst. choice ist 2, also ist das passende Label case 2.
public class Dial {
public static void main(String[] args) {
int choice = 2;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Im Ordner, der Dial.java hält, tippe javac Dial.java. Wenn geschweifte Klammern, runde Klammern und Doppelpunkte passen, schreibt javac keine eigene Zeile. Dann tippe java Dial — nicht java Dial.java. Lass die Endung .java beim zweiten Befehl weg. Dieselben zwei Befehle funktionieren unter Windows und unter macOS; diese Seite braucht keine andere Shell-Schreibweise für eines der Systeme. Das Programm sollte mid schreiben und enden. Es sollte dich nicht tippen lassen. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in der Datei. Lösche diesen Aufruf und behalte das int plus das switch oben. Für eine falsche Bildschirmzeile brauchst du keine neue JDK-Installation.
Warum mid und nicht low oder high? Weil der Wert in den Klammern 2 war und case 2 das passende Label ist. Java druckt in diesem Lauf nicht die Ziffer 2, es sei denn, du schreibst ein println für diese Ziffer. Es druckt, was println unter dem passenden case ausführt. Runde Klammern halten den verglichenen Wert. Jedes case-Label hier ist eine feste ganze Zahl. break beendet das switch, damit spätere cases still bleiben. default wartet auf Werte, die keinen case treffen — es bleibt ungenutzt, solange choice 2 ist.
Wenn kein case passt
Ändere nur den gespeicherten Wert:
int choice = 9;
Lass die switch-Struktur stehen. Jetzt passt weder case 1 noch case 2 noch case 3. Java geht zu default und führt System.out.println("none"); aus. Der Bildschirm soll none zeigen, eine Zeile.
public class Dial {
public static void main(String[] args) {
int choice = 9;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Kompiliere und führe erneut aus: javac Dial.java, dann java Dial. Du solltest none sehen. Du hast die case-Zeilen nicht neu geschrieben — nur der Wert unter choice hat sich geändert. Nachdem du none gesehen hast, kannst du int choice = 2; zurücksetzen, um zur ersten Demo zu kommen. Beide Versionen sind gültiges Java. Sie lehren dieselbe switch-Form mit passendem case und mit default.
Lies den default-Lauf noch einmal der Reihe nach. choice hält 9. switch (choice) beginnt. case 1 passt nicht. case 2 passt nicht. case 3 passt nicht. Die Ausführung geht weiter bei default. println("none") läuft. Eine Zeile auf dem Bildschirm. Die Ziffer 9 selbst erscheint nicht, es sei denn, du druckst sie absichtlich.
break stoppt spätere cases
break ist keine Dekoration. Ohne break kann Java nach einem Treffer die Zeilen des nächsten case weiter ausführen. Dieses Durchfallen überrascht Anfänger. Hier ist eine kurze Demo, die break nach case 2 absichtlich vergisst — probiere sie in einer eigenen Datei, oder lies sie genau, bevor du sie als Hauptdatei kompilierst:
public class Dial {
public static void main(String[] args) {
int choice = 2;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Mit choice gleich 2 und ohne break unter case 2 kann der Bildschirm mid in einer Zeile und high in der nächsten zeigen. case 2 passte, druckte mid, fiel dann in case 3 und druckte high. Die ersten Lehrdemos behalten break unter jedem case, damit jeder Pfad genau eine Zeile schreibt. Setze break zurück, bevor du Dial.java wieder als behaltene Lektionsdatei behandelst.
Regeln, die die Labels klar halten
Runde Klammern um den geschalteten Wert sind Pflicht. switch choice { … } ohne Klammern lässt javac scheitern. Jedes case-Label auf dieser Seite ist eine ganzzahlige Konstante: case 1:, case 2:, case 3:. Ein Doppelpunkt folgt dem Label. case 2; mit Semikolon statt Doppelpunkt ist nicht die Form, die diese Lektion kompiliert. default hat keinen Wert danach — nur default: und dann die Zeilen für „nichts hat gepasst“.
switch ist nicht dasselbe Werkzeug wie if. if (ready) stellt eine Wahr-oder-falsch-Frage. switch (choice) vergleicht einen Wert mit einer Liste fester Labels. Schreibe nicht switch (ready) mit einem boolean und erwarte dieselbe Lektionsform wie Gate.java. Halte die Demos dieser Seite bei einem int namens choice und ganzzahligen case-Labels. Vergleiche wie if (score > 10) gehören weiterhin zu if, wenn du einen Bereich brauchst; switch glänzt, wenn die Werte einzeln und im Voraus bekannt sind.
Ein häufiger Mix-up ist, die Syntax selbst zu drucken: System.out.println("switch (choice)");. Das schreibt die Zeichen switch (choice). Es wählt keinen case. Ein anderer Mix-up ist, eine if / else-Gate-Demo in demselben main zu lassen und sich zu wundern, warum der Bildschirm pass statt mid zeigt. Das main dieser Sitzung soll nur das int und das switch halten.
📊 choice und der Bildschirm
| choice | Bildschirm |
|---|---|
| 1 | low |
| 2 | mid |
| 3 | high |
| 9 | none |
Nutze die Tabelle als Kontrolle nach einem Lauf, nicht statt eines Laufs. choice 2 mit der ersten Demo schreibt mid. choice 9 mit der zweiten Demo schreibt none. choice 1 schreibt low. choice 3 schreibt high. Wenn mid und high beide bei choice 2 erscheinen, fehlt ein break unter case 2 — repariere die breaks statt Java neu zu installieren.
Was du jetzt kannst
Du kannst eine ganze Zahl speichern, sie in switch (…) legen und jedem festen Wert einen eigenen case mit println und break geben. Wenn ein case passt, läuft diese Zeile; wenn nichts passt, läuft default. Die nächste Seite ist for, wo derselbe Block von Zeilen immer wieder laufen kann, während ein Zähler sich ändert.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt