Альтернативный способ использовать break при использовании case в Java - PullRequest
2 голосов
/ 02 октября 2019

Есть ли альтернативный способ пропустить «разрыв» в каждом случае и просто подразумевать, что, когда найден случай с тем же значением, просто разрывается.

int w=3;
switch (w)
{
    case 1:
        System.out.println("1");
        break;
    case 2:
        System.out.println("2");
        break;
    case 3:
        System.out.println("3p");
        break;
    case 4:
        System.out.println("4");
        break;
    default:
        System.out.println("csd");
        break;
}

Ответы [ 3 ]

5 голосов
/ 02 октября 2019

Нет, break не является обязательным, если вы не хотите перейти к следующей case метке. (Ну, если вы не return или throw из case.) Но продолжайте читать ...

Если вы не хотите писать break s, вы можете использовать if/ else if / else структура вместо:

if (w == 1) {
    System.out.println("1");
} else if (w == 2) {
    System.out.println("2");
} else if (w == 3) {
    System.out.println("3p");
} else if (w == 4) {
    System.out.println("4");
} else {
    System.out.println("csd");
}

Но : один раз JEP 325 JEP 354 поддерживается, вместо этого вы сможете использовать switch выражение :

switch (w) {
    case 1 ->  System.out.println("1");
    case 2 ->  System.out.println("2");
    case 3 ->  System.out.println("3p");
    case 4 ->  System.out.println("4");
    default -> System.out.println("csd");
}

JEP 325 - это функция предварительного просмотра в JDK 12.0.2а JEP 354 (небольшое обновление) является функцией предварительного просмотра в JDK 13. Вы можете скомпилировать код, используя его так:

javac --enable-preview --release 13 Example.java

и запустить его так:

java --enable-preview --release 13 Example

Используйте выпуск 13 для JEP 325 и 14 для JEP 354.

В дополнение к вышеприведенному использованию, интересная вещь о switch выражениях состоит в том, что они выражений приводят к значению,Подробности см. В JEP.

3 голосов
/ 02 октября 2019

Еще один способ решить вашу проблему, например, с помощью карты:

Map<Integer, String> map = Map.of(1, "1", 2, ....);
System.out.println(map.getOrDefault(w, "csd"));

ПРИМЕЧАНИЕ. Синтаксис карты из Java 9+, вы можете создать карту многими способами.

0 голосов
/ 02 октября 2019

Я думаю, что у меня есть представление о том, что вы ищете: я стараюсь не повторять значения case и println().

int w = 3;

switch (w) {
    case 1:
    case 2:
    case 4:
        System.out.println(w);
        break;
    case 3:
        System.out.println("3p");
        break;
    default:
        System.out.println("csd");
        break;
}

Таким образом, вы обрабатываете случаи только в том случае, еслижелаемый вывод не соответствует значению w.

...