2011-12-18 71 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; 
}