Switch-Case

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.
YouTube immer automatisch ladenInhaltsverzeichnis
Als Text lesen
Folgendes Beispiel:
Hier wird abhängig von einer Variable someNumber
ein Text ausgegeben. Allerdings können Verkettungen von Äquivalenz-Abfragen dieser Art schnell unübersichtlich werden. Dafür gibt es eine schönere Variante: switch
case
Mit einer switch
case
Abfrage lässt sich eine bestimmte Eingabe auf Gleichheit mit unterschiedlichen Werten prüfen. Es gibt mittlerweile zwei unterschiedliche Varianten von switch
case
:
Das "alte" und das "neue".
Das "alte" switch
case
Hiermit kannst du die selbe Eingabe (hier someNumber
) auf Gleichheit mit mehreren Werten prüfen. Die einzelnen case
s entsprechen den if
Abfragen.
Das default
Keyword wird verwendet, um alle anderen Fälle abzudecken. Es entspricht also dem else
bei if
else
.
Achtung!
Jeder case
sollte durch ein break
beendet werden. Dieses sorgt dafür, dass das switch
Statement beendet wird, sobald einmal eine Übereinstimmung gefunden wurde.
Wenn das break
weggelassen wird, können ungewollte Effekte auftreten:
Der obige Code gibt BCD
auf der Konsole aus, nicht B
!
Dieses Verhalten nennt man fall-through.
Das "neue" switch
case
Beim neuen switch
case
verwendest du keine Doppelpunkte, sondern Pfeile (->
). Außerdem benötigst du kein break
. Die Körper der einzelnen case
s sind von geschweiften Klammern umgeben.
Es gibt noch eine weitere sehr nützliche Funktionalität des neuen switch
case
:
Hier verhält sich das switch
case
wie ein Ausdruck, der zu einem bestimmten Wert evaluiert. Die einzelnen case
s enhalten direkt den Wert, der in dem jeweiligen Fall an season
zurückgegeben werden soll.
Möchte man weiterhin mehrere Zeilen Code in einen case
schreiben, so kann man ebenfalls geschweifte Klammern verwenden. Dann ist es aber notwendig, explizit anzugeben, was der Rückgabewert des switch
Ausdrucks sein soll. Hierfür gibt es yield
:
Der yield
Identifier funktioniert für das switch
case
ähnlich wie das return
Keyword für Methoden funktioniert:
Der Wert nach yield
ist der Wert, zu dem der gesamte Audruck am Ende evaluiert, falls der jeweilige case
eingetreten ist.
yield
lässt sich auch mit dem alten switch
case
verwenden.
Übersicht reservierter Wörter für Kontrollstrukturen
Keyword / Identifier | Verwendung |
---|---|
return |
Beendet einen Methodendurchlauf und gibt ggf. einen Wert aus der Methode zurück |
break |
Beendet die nächstäußere Schleife oder das nächstäußere switch case |
yield |
Gibt einen Wert an, zu dem das switch case bei Eintritt dieses Falls evaluiert |
Die Klasse Date
repräsentiert einen bestimmten Tag eines bestimmten Jahres. Deine Aufgabe ist es, drei mal die gleiche Methode auf eine unterschiedliche Art und Weise zu implementieren:
daysInMonthIfElse()
gibt die Anzahl an Tagen zurück, die der Monatmonth
des Jahresyear
hat. Hierbei sollst du keinswitch
case
verwenden, sondern ausschließlichif
undelse
Abfragen nutzen.-
daysInMonthSwitchCaseOld()
macht genau das gleiche wiedaysInMonthIfElse()
. Hier sollst du aber keinif
else
verwenden, sondern (das alte)switch
case
.Ausnahme: Für die Überprüfung, ob der Februar 28 oder 29 Tage hat, darfst du
if
else
verwenden. daysInMonthSwitchCaseNew()
macht ebenfalls das gleiche. Hier sollst du das neueswitch
case
verwenden. (Auch hier ist nur für den Februar Checkif
else
erlaubt.)
Hinweise
- Falls eine Methode eine ungültige Monats-Nummer bekommt, soll
-1
zurückgegeben werden - Die Methode
isLeapYear()
gibt genau danntrue
zurück, falls das Jahryear
ein Schaltjahr ist. -
Die Anzahl der Tage im Monat kannst du dieser Tabelle entnehmen:
Monat 1 2 3 4 5 6 7 8 9 10 11 12 Anzahl Tage 31 28 (Schaltjahr: 29) 31 30 31 30 31 31 30 31 30 31

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.
Online Editor immer automatisch ladenDas Ergebnis des Beispiels sollte folgende Ausgabe produzieren:
31, 31, 31 30, 30, 30 29, 29, 29 28, 28, 28 29, 29, 29
Häufige Fehlerquellen
break
vergessen- Anzahl Tage je Monat falsch eingetragen
yield
vergessen- Semikolon bei
switch
case
mit Rückgabewert vergessen - Sonstige Syntaxfehler (Doppelpunkt / Pfeil vergessen, Klammern falsch etc.)
Lösungsvorschlag if
else
Lösungsvorschlag switch
case
(alt)
Lösungsvorschlag switch
case
(neu)
Lösungsvorschlag Gesamt
Interesse an einer Zusammenarbeit?
- Entwicklung von Desktopanwendungen
- Datenanalyse & Machine Learning
- Automatisierte Datenverarbeitung