字符串作为switch语句[重复]
Posted
技术标签:
【中文标题】字符串作为switch语句[重复]【英文标题】:String as switch statement [duplicate] 【发布时间】:2012-01-23 05:37:35 【问题描述】:可能重复:Switch Statement with Strings in Java
我试图在 String 上使用 switch 语句,但它给出了编译错误。如果有人建议我如何在 switch-case 语句中使用 String,这将对我有所帮助。
【问题讨论】:
字符串不能在 Java 的 switch 语句中使用。 @Walkerneo 自 Java7 以来不正确。这也是建议的解决方法:使用最新版本。 【参考方案1】:如果你真的很想使用 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;
【讨论】:
嗯,这显然与使用 String->integer 中的 hashmap 相同——尽管这是一个巧妙的技巧。【参考方案2】:如前所述,你不能。技术细节可以参考compiling switches的规范。在 Java SE 7 中,此功能已实现。在 JDK 7 中使用 String
开关的示例,请参见 this page。
也许this question 也有帮助。
【讨论】:
【参考方案3】:你不能。使用 if/else if/else if/else。除非你在 Java7 上。这个重复问题的答案可以比我解释得更好:https://***.com/a/338230/3333
【讨论】:
【参考方案4】:不能直接使用字符串,但是可以做一个关键字符串数组,快速搜索,打开索引,像这样:
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;
【讨论】:
【参考方案5】:您不能在switch
语句中使用String
,但可以使用Enum
类型。使用Enum
比使用String
甚至public static final int MY_CONSTANT
要好得多。
你会在这里找到一个非常好的教程:Java Enum type tutorial
【讨论】:
以上是关于字符串作为switch语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章
switch语句中的表达式不能是字符串吗? C++ [重复]