Java中的变量值切换案例

问题描述 投票:1回答:6

我正在寻求切换,其中5个案例在功能上相同,但随后会有其他独特案例。有没有办法列出处理5个不同值的案例值?谢谢

java switch-statement
6个回答
9
投票

您可以在交换机中复合标签

switch (variable) {
  case 'a': case 'b' : case 'c' : case 'd' :
     do something;
     break;
  case 'e': case 'f' :
     do something else
     break;
  default:
     do something;
}

将开关视为跳转到标签(可能伴随跳转(中断)到最后)将有所帮助。这意味着开关

switch (variable) {
  case 'a': case 'b' : case 'c' : case 'd' :
     do something;
     // note that there's no break here.
  case 'e': case 'f' :
     do something else
     break;
  default:
     do something;
}

为'a','b','c'和'd'做“做某事”和“做别的事”;虽然它只会为'e'和'f'“做其他事情”。最后,如果它不是上述任何一个,它会触及默认的“做某事”。


2
投票
switch (value) {
case 1:
case 2:
case 3:
case 4:
    doSomethingIdentical();
    break;
case 5:
    doSomethingDifferent();
    break;
default:
    break;
}

2
投票

这很容易做到。不要只有一个案例值来处理所有5个不同的值,而是将5个案例值相互映射,如下所示:


switch(value)
{
    case 1:
    case 2:
        //case 1 and 2 will both result in this code being executed
        doSomething();
        break;
    case 3:
        doSomethingElse();
        break;
}

2
投票

只要你没有在开关上放置break;,它就会落到下一个声明中。

这样,你就可以得到这样的东西:

String value(int val) {
    String out = "";
    switch(val) {
    case 0:
        out = "case 0";
        break;
    case 1:
        out = "case 1";
        break;
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
        out = "case 2, 3, 4, 5 or 6";
        break;
    case 7:
        out = "case 7";
        break;
    }
    return out;
}

0
投票

是的,只需使用这样的开关:

switch(v) {

   case 1:
   case 2:
   case 3:
       identicFunctionality();
       break;
   case 4:
       other01();
       break;
   case 5:
       other02();
       break;
   default:
       _default();
}

0
投票

从Java 12开始,我相信它是受支持的。看看JEP 354。我从来没有使用过语法,但我认为它会像你的情况那样运行。

switch (day) {
    case 1, 2, 3, 4, 5    -> System.out.println("1-5");
    case 7                -> System.out.println(7);
    case 8                -> System.out.println(8);
    case 9                -> System.out.println(9);
}

在相关的说明JEP 325也很酷。

© www.soinside.com 2019 - 2024. All rights reserved.