2011-12-18 152 views
1

可能重复:
Switch Statement with Strings in JavaString作为switch语句

我想使用的字符串switch语句,但它给编译错误。如果有人告诉我如何在switch-case语句中使用String,这对我会有所帮助。

+0

字符串不能在Java中的switch语句中使用。 – mowwwalker 2011-12-18 22:40:10

+4

@Walkerneo自Java7以来并非如此。这也是建议的修复:使用最新版本。 – Voo 2011-12-18 22:42:30

回答

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

那么这显然与使用String-> integer中的散列表相同 - 尽管是一个巧妙的技巧。 – Voo 2011-12-18 23:12:37

0

你不能在switch语句中使用String,但你可以使用Enum类型。使用Enum比使用String甚至public static final int MY_CONSTANT要好得多。

你会找到一个很好的教程在这里:Java Enum type tutorial

4

前面已经说过,你不能。有关技术细节,请参阅有关compiling switches的规格。使用Java SE 7,此功能已实施。有关使用开关String与JDK 7的示例,请参阅this page

也许this question也可能有帮助。

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; 
}