我试图在String上使用switch语句,但它给出了编译错误。如果任何人建议我如何在switch-case语句中使用String,它对我有帮助。
答案 0 :(得分:5)
如果你真的想要使用switch语句,有一种方法。 创建一个包含switch语句
的枚举类public enum MustUseSwitch{
value1,
value2,
value3;
}
然后使用枚举切换到语句。
switch(MustUseSwitch.valueOf(stringVariable)){
case value1:
System.out.println("Value1!");
break;
case value2:
System.out.println("Value2!");
break;
case value3:
System.out.println("Value3!");
break;
}
答案 1 :(得分:4)
如前所述,你不能。有关技术细节,请参阅有关compiling switches的规范。使用Java SE 7,已实现此功能。有关使用带{JDK 7的String
开关的示例,请参阅this page。
也许this question也可以提供帮助。
答案 2 :(得分:3)
你做不到。如果/ else,则使用if / else if / else。除非您使用的是Java7。关于这个重复问题的答案可以比我更好地解释它:https://stackoverflow.com/a/338230/3333
答案 3 :(得分:2)
你不能直接使用字符串,但你可以创建一个关键字符串数组,快速搜索它,然后打开索引,如下所示:
String[] sortedKeys = new String[] {"alpha", "bravo", "delta", "zebra"};
int keyIndex = Arrays.binarySearch(sortedKeys, switchKey);
switch(keyIndex) {
case 0: // alpha
break;
case 1: // bravo
break;
case 2: // delta
break;
case 3: // zebra
break;
}
答案 4 :(得分:0)
您无法在String
语句中使用switch
,但可以使用Enum
类型。使用Enum
比使用String
甚至public static final int MY_CONSTANT
要好得多。
你会在这里找到一个非常好的教程:Java Enum type tutorial