W moim kodzie program robi coś w zależności od tekstu wprowadzonego przez użytkownika. Mój kod wygląda następująco:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Jednak kod w przypadku text1
i text4
jest taki sam. Zastanawiałem się zatem, czy byłoby możliwe wdrożenie czegoś takiego
case text1||text4: {
//blah
break;
}
Wiem, że ||
operator nie będzie działał w instrukcji case, ale czy mogę użyć czegoś podobnego.
java
switch-statement
Ankush
źródło
źródło
Odpowiedzi:
Możesz użyć obu
CASE
instrukcji w następujący sposób.ZOBACZ TEN PRZYKŁAD: Przykład kodu oblicza liczbę dni w danym miesiącu:
To jest wynik kodu:
PRZESZŁOŚĆ:
PRZYKŁADOWY KOD:
To jest wynik kodu:
Używanie ciągów w instrukcjach przełączania
Dane wyjściowe z tego kodu to 8.
Z dokumentów Java
źródło
break
są w zasadzie dołączane z kolejnym blokiem skrzynek, który jest wizualnie poniżej, dlatego spada .możesz zrobić jak:
źródło
Te
case
wartości są tylko Bezkodowe punkty „goto”, które mogą dzielić ten sam punkt wejścia:Zauważ, że nawiasy klamrowe są zbędne.
źródło
Po prostu zrób
źródło
Dzięki integracji JEP 325: wyrażenia przełączników (wersja zapoznawcza) w kompilacjach wczesnego dostępu JDK-12 można teraz korzystać z nowej formy etykiety przełącznika jako:
lub przeformułować demo z jednej z odpowiedzi , coś w stylu: -
Oto, jak możesz spróbować - Skompiluj funkcję podglądu JDK12 za pomocą Maven
źródło
Nawiasy są niepotrzebne. Po prostu zrób
Jeśli ktoś jest ciekawy, nazywa się to przypadkiem. Zdolność do tego jest powodem, dla którego
break;
konieczne jest zakończenie instrukcji case. Aby uzyskać więcej informacji, zobacz artykuł w Wikipedii http://en.wikipedia.org/wiki/Switch_statement .źródło
The
fallthrough
odpowiedzi Pozostałe są dobre.Jednak innym podejściem byłoby wyodrębnienie metod z treści instrukcji przypadku, a następnie po prostu wywołanie odpowiedniej metody z każdego przypadku.
W poniższym przykładzie zarówno wielkość liter „text1”, jak i wielkość liter „text4” zachowują się tak samo:
Osobiście uważam, że ten styl pisania instrukcji jest łatwiejszy w utrzymaniu i nieco bardziej czytelny, szczególnie gdy metody, które wywołujesz, mają dobre opisowe nazwy.
źródło
text1
itext4
ZAWSZE PRAWIE zrobi to samo, niezależnie od przyszłych zmian. Jeśli zawsze powinny być połączone, dokonanie zmiany w przypadkutext1
(co oznacza zmianę wywoływanej metody) wymagałoby zmianytext4
. W tym przypadku nie jest to oczywiście łatwiejsze w utrzymaniu. To zależy od sytuacji.Podejście Falling jest najlepsze, jakie czuję.
źródło
Możesz użyć:
źródło
Wartości przypadków są po prostu bezkodowymi punktami „goto”, które mogą dzielić ten sam punkt wejścia:
Zauważ, że nawiasy klamrowe są zbędne.
źródło
JEP 354: Przełącz wyrażenia ( wersja zapoznawcza) w JDK-13 i JEP 361: Przełącz wyrażenia (Standard) w JDK-14 rozszerzy instrukcję przełączania, aby mogła być używana jako wyrażenie .
Teraz możesz:
case L ->
):Demo jednej z odpowiedzi może wyglądać następująco:
źródło