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 cases 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 cases 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 cases 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 Monatmonthdes Jahresyearhat. Hierbei sollst du keinswitchcaseverwenden, sondern ausschließlichifundelseAbfragen nutzen.-
daysInMonthSwitchCaseOld()macht genau das gleiche wiedaysInMonthIfElse(). Hier sollst du aber keinifelseverwenden, sondern (das alte)switchcase.Ausnahme: Für die Überprüfung, ob der Februar 28 oder 29 Tage hat, darfst du
ifelseverwenden. daysInMonthSwitchCaseNew()macht ebenfalls das gleiche. Hier sollst du das neueswitchcaseverwenden. (Auch hier ist nur für den Februar Checkifelseerlaubt.)
Hinweise
- Falls eine Methode eine ungültige Monats-Nummer bekommt, soll
-1zurückgegeben werden - Die Methode
isLeapYear()gibt genau danntruezurück, falls das Jahryearein 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
breakvergessen- Anzahl Tage je Monat falsch eingetragen
yieldvergessen- Semikolon bei
switchcasemit 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