Verzweigungen in Java mit switch und case
Tags: Java | Programmieren lernen | switch | VerzweigungenWorum geht´s?
In diesem Java Tutorial werden wir mit switch und case einfache Verzweigungen in unser Programm einfügen. So können wir erreichen, dass unser Programm je nachdem, welchen Wert bestimmte Variablen annehmen, unterschiedliche Dinge tut.
1. Was ist eine Verzweigung mit switch und case?
Wenn also z.B. die Variable a2 den Wert 1 annimmt, dann gehe den 1. Weg ganz links weiter.
Hat die Variable a2 den Wert 2 oder 3, nimm den mittleren Weg durchs Programm.
Und hat sie die Werte 4, 5 oder 6, dann nimm den rechten Weg.
Dabei kann es beliebig viele mögliche Wege geben.
2. Ein switch case in Java korrekt schreiben
Das obige Beispiel lässt sich in Java so umsetzen (die Zufallszahl ist nicht notwendig, aber sie hilft beim Vorzeigen, weil das Programm immer andere Wege geht wenn man es neu startet):
import java.util.Random; public class HelloWorld { public static void main(String[] args) { Random r = new Random(); // erstelle zahl zwischen 1 und 6 int a2 = r.nextInt(6) + 1; switch (a2) { case 1: System.out.println("Zahl war 1"); break; case 2,3: System.out.println("Zahl war 2 oder 3"); break; case 4,5,6: System.out.println("Zahl war 4, 5 oder 6"); break; } } }
Die „break;“-Befehle sorgen dafür, dass ein jeder „case“ auch beendet wird, wenn alles passiert ist was in diesem Fall passieren soll.
2.1 Default-Wege hinzufügen
Was aber, wenn unsere Zufallszahl eine andere Zahl außer den vorherbestimmten 1-6 sein würde?
Dann würde in unserem derzeitigen switch case gar nichts passieren.
Um das zu ändern, können wir einen default-case hinzufügen. Dieser wird angewendet, wenn die Zufallszahl keinem der angegebenen cases entspricht:
import java.util.Random; public class HelloWorld { public static void main(String[] args) { Random r = new Random(); // erstelle zahl zwischen 0 und 9 int a2 = r.nextInt(10); switch (a2) { case 1: System.out.println("Zahl war 1"); break; case 2,3: System.out.println("Zahl war 2 oder 3"); break; case 4,5,6: System.out.println("Zahl war 4, 5 oder 6"); break; default: System.out.println("War nichts davon!"); } } }
Beim default-case brauchen wir kein „break;“ mehr, weil unser switch case dann sowieso aus ist.
2.2 Ein switch case zum Datentyp char oder String
Wenn du dein switch case mit einer Variable vom Datentyp char oder String erstellen willst, musst du darauf achten, auch die Anführungs-Striche entsprechend zu setzen:
public class HelloWorld { public static void main(String[] args) { char geschlecht = 'm'; switch (geschlecht) { case 'm': System.out.println("Du bist wohl ein Mann."); break; case 'w': System.out.println("Du bist wohl eine Frau."); break; case 'd': System.out.println("Du bist wohl diverser als Mann und Frau"); break; default: System.out.println("Dein Geschlecht ist uns zwar unbekannt, aber du bist natürlich trotzdem gerne willkommen!"); } } }
Hättest du einen String-Datentyp als Variable, die du in switch () einsetzt, schreibst du statt den einfachen Anführungsstrichen (‚) entsprechend doppelte („).
3. Nachteile von switch case gegenüber if und else
Wenn wir in einem case nur maximal 5 oder vielleicht 10 Werte haben, können wir sie aufzählen, in dem wir sie mit einem Beistrich trennen.
Aber wenn ein case nun z.B. von 1-10000 geht, müssten wir
case 1,2,3,4,5,6,7,8,9,10,11,12,…
alle Möglichkeiten aufzählen. Zieeeemlich mühsam.
Deswegen wird switch case im Vergleich zu if und else eher selten verwendet.
Aber da es in fast jeder Programmiersprache vorkommt, macht es trotzdem Sinn, es zu lernen.
Außerdem ist es für den Anfang leichter als if und else 🙂