在switch case /转换ifs to switch语句中有多个值

Ste*_*eve 2 java switch-statement

我有一个很大的Ifs列表,我想把它改成一个switch语句.目前它看起来像这样:

if(x == 1){
    ...
}
if(x == 2){
    ...
}
if(myArray.contains(x)){
    ...
}
Run Code Online (Sandbox Code Playgroud)

实际上它比这长一点,但是如果在示例中让我感到困惑的是第三个 - 如何改变它以使其在交换机中工作,或者甚至可能?

sol*_*dil 17

您可以执行类似的操作,但根据代码中可能的退出条件YMMV:

switch (x) {
case 1: 
  ...
  break;
case 2:
  ...
  break;
case 3:
case 4:
  ... multi-case
  break;
default:
  if(myArray.contains(x)){
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 与问题中的前两个ifs不同,即使前面的一个也是真的,第三个仍然可以是真的.`x`不能同时等于`1`和`2`,但它可以等于`1`并同时包含在`myArray`中.将if语句移动到`case`语句`default`可能不是正确的解决方案. (3认同)