Java中的变量值切换案例

时间:2011-02-14 17:15:03

标签: java switch-statement

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

6 个答案:

答案 0 :(得分: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'“做其他事情”。最后,如果它不是上述任何一个,它会触及默认的“做某事”。

答案 1 :(得分: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;
}

答案 2 :(得分:2)

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

答案 3 :(得分: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;
}

答案 4 :(得分:0)

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

switch(v) {

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

答案 5 :(得分: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也很酷。