Java SWITCH中CASE的动态值

Dha*_*ara 1 java dynamic switch-statement

我需要实现具有动态值的switch case语句,如下所示.

int v1 = 5;
int key = xx.getKey();

switch (v1) {
   case key:
       .......
   case key+1:
       .......
   case key+2:
       .......
   default:
       .......
}
Run Code Online (Sandbox Code Playgroud)

使用它时,java抱怨"case表达式必须是常量表达式".有没有办法在案例中使用动态值.(开关变量也是动态值)

And*_*ner 8

您不能在switch语句中使用非常量表达式作为案例.但是,可以使案件不断减去key来自v1:

switch (v1 - key) {
   case 0:
       .......
   case 1:
       .......
   case 2:
       .......
   default:
       .......
}
Run Code Online (Sandbox Code Playgroud)

但是,这只能用于简单的情况.正如@BorisTheSpider指出的那样,在更一般的情况下,你需要使用if...else语句.