我需要为case设置具有动态值的switch case语句,如下所示。
int v1 = 5;
int key = xx.getKey();
switch (v1) {
case key:
.......
case key+1:
.......
case key+2:
.......
default:
.......
}
[使用此选项时,Java会抱怨“ case表达式必须是常量表达式”。有没有一种方法可以使用动态值以防万一。 (开关变量也是动态值)
您不能在开关语句中使用非常数表达式作为大小写。但是,可以通过从key
中减去v1
来使大小写恒定:
switch (v1 - key) {
case 0:
.......
case 1:
.......
case 2:
.......
default:
.......
}
但是,这仅适用于简单的案例。正如@BorisTheSpider指出的那样,在更一般的情况下,您需要使用if...else
语句。
检查此链接以了解Switcher类的完整实现。它不完全是开关,但其工作原理类似于开关,但具有动态案例功能。
https://coderwall.com/p/wgtifw/java-tip-3-how-to-implement-dynamic-switch