Java SWITCH中CASE的动态值

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

我需要为case设置具有动态值的switch case语句,如下所示。

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

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

[使用此选项时,Java会抱怨“ case表达式必须是常量表达式”。有没有一种方法可以使用动态值以防万一。 (开关变量也是动态值)

java dynamic switch-statement
2个回答
8
投票

您不能在开关语句中使用非常数表达式作为大小写。但是,可以通过从key中减去v1来使大小写恒定:

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

但是,这仅适用于简单的案例。正如@BorisTheSpider指出的那样,在更一般的情况下,您需要使用if...else语句。


0
投票

检查此链接以了解Switcher类的完整实现。它不完全是开关,但其工作原理类似于开关,但具有动态案例功能。

https://coderwall.com/p/wgtifw/java-tip-3-how-to-implement-dynamic-switch

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