Java SWITCH中CASE的动态值

时间:2015-09-23 07:00:31

标签: java dynamic switch-statement

我需要使用动态值实现switch case语句,如下所示。

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

switch (v1) {
   case key:
       .......
   case key+1:
       .......
   case key+2:
       .......
   default:
       .......
}

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

1 个答案:

答案 0 :(得分:8)

您的switch语句中不能包含非常量表达式。但是,您可以通过从key中减去v1来使案例保持不变:

switch (v1 - key) {
   case 0:
       .......
   case 1:
       .......
   case 2:
       .......
   default:
       .......
}

然而,这只能起作用,因为你的案例很简单。正如@BorisTheSpider指出的那样,在更一般的情况下,您需要使用if...else语句。