In meinem Code macht das Programm etwas abhängig von dem vom Benutzer eingegebenen Text. Mein Code sieht aus wie:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Der Code in Fällen text1
und text4
ist jedoch der gleiche. Ich habe mich daher gefragt, ob es mir möglich sein würde, so etwas umzusetzen
case text1||text4: {
//blah
break;
}
Ich weiß, dass der ||
Operator in der case-Anweisung nicht funktioniert, aber es gibt etwas Ähnliches, das ich verwenden kann.
java
switch-statement
Ankush
quelle
quelle
Antworten:
Sie können beide
CASE
Anweisungen wie folgt verwenden.SIEHE DIESES BEISPIEL: Das Codebeispiel berechnet die Anzahl der Tage in einem bestimmten Monat:
Dies ist die Ausgabe des Codes:
DURCHFALLEN:
BEISPIELCODE:
Dies ist die Ausgabe des Codes:
Verwenden von Strings in switch-Anweisungen
Die Ausgabe dieses Codes ist 8.
VON Java Docs
quelle
break
werden grundsätzlich an den nächsten Fallblock angehängt, der sich visuell darunter befindet, und fallen daher durch.Sie können tun wie:
quelle
Die
case
Werte sind nur codelose "goto" -Punkte, die denselben Einstiegspunkt haben können:Beachten Sie, dass die geschweiften Klammern redundant sind.
quelle
Mach einfach
quelle
Mit der Integration von JEP 325: Switch Expressions (Vorschau) in JDK-12-Builds für den frühen Zugriff kann die neue Form des Switch-Labels jetzt wie folgt verwendet werden:
oder um die Demo aus einer der Antworten neu zu formulieren , so etwas wie: -
So können Sie es ausprobieren: Kompilieren Sie eine JDK12-Vorschaufunktion mit Maven
quelle
Die Klammern sind nicht erforderlich. Mach einfach
Wenn jemand neugierig ist, spricht man von einem Fallfall. Die Fähigkeit, dies zu tun, ist der Grund, warum
break;
es notwendig ist, Fallaussagen zu beenden. Weitere Informationen finden Sie im Wikipedia-Artikel http://en.wikipedia.org/wiki/Switch_statement .quelle
Die
fallthrough
Antworten anderer sind gut.Ein anderer Ansatz wäre jedoch, Methoden aus dem Inhalt Ihrer case-Anweisungen zu extrahieren und dann einfach die entsprechende Methode aus jedem Fall aufzurufen.
Im folgenden Beispiel verhalten sich Fall 'Text1' und Fall 'Text4' gleich:
Ich persönlich finde diese Art des Schreibens von Fallaussagen wartbarer und etwas lesbarer, insbesondere wenn die von Ihnen aufgerufenen Methoden gute beschreibende Namen haben.
quelle
text1
undtext4
wird fast das Gleiche tun, unabhängig von einer zukünftigen Änderung. Wenn sie immer verknüpft sein sollten, würde eine Änderung des Falls fürtext1
(dh das Ändern der aufgerufenen Methode) eine Änderung in erforderntext4
. In diesem Fall ist es offensichtlich nicht mehr wartbar. Es hängt von der Situation ab.Fall-through-Ansatz ist der beste, den ich fühle.
quelle
Sie können verwenden:
quelle
Die Fallwerte sind nur codelose "goto" -Punkte, die denselben Einstiegspunkt haben können:
Beachten Sie, dass die geschweiften Klammern redundant sind.
quelle
JEP 354: Switch-Ausdrücke (Vorschau) in JDK-13 und JEP 361: Switch-Ausdrücke (Standard) in JDK-14 erweitern die switch-Anweisung, sodass sie als Ausdruck verwendet werden kann .
Jetzt kannst du:
case L ->
):Die Demo aus einer der Antworten könnte also so aussehen:
quelle