2013-01-11 13 views
1

我練了一天,我來到翻過這個錯誤與交換機的字符串:開關在Java中

Cannot switch on a value of type String. Only int values or enum constants are permitted 

我不知道我會如何解決這個問題,所以我來到這裏尋求幫助。我正在使用Eclipse。這裏是源,第二個變量(以大寫)是我得到的錯誤:

public class Switch { 
public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    System.out.println("Please enter a command: "); 
    String VARIABLE = input.nextLine(); 

    switch (VARIABLE) { 
    case "start": 
     System.out.println("Machine started!"); 
     break; 

    case "stop": 
     System.out.println("Machine stopped!"); 
     break; 

    default: 
     System.out.println("Invalid command"); 
    } 

} 
} 

它會是涼快的,如果有人能幫助我與此有關。我是比較新的這個,所以我不知道任何這甚至是有道理的。

+7

這意味着什麼是說;你不能打開一個字符串。 Java 7增加了這種功能,文檔/教程聲明瞭這一點:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

+0

'java -version'的輸出是什麼? – squiguy

+4

這意味着它現在是時候升級到Java 1.7 – exexzian

回答

11
switch (VARIABLE) { 

switchStrings是從Java 7起支持。我猜你正在使用您需要或者升級您的Java版本爲Java的較低版本7(或)從開關和使用支持的類型刪除字符串。

這裏是oracle tutorial on switch statement

+0

感謝您的答案!我安裝了Java 7,但它與工作區沒有關聯。我有一個過時的Eclipse版本。對於將來閱讀此內容的任何人,請確保已安裝Java 7,並且先前版本的Java已被擦除。然後,爲您的工作區啓用該版本。 – Godz

3

除了Nambari的回答:您可以使用的if-else用繩子結構,當然,有一個與絃樂開關樣的邏輯。

2

你的代碼是正確的,但在java7(jdk1.7)中引入了對switch-case構造的String支持,所以你的錯誤意味着你有一個較老的java版本,你必須升級它。 如果你不想升級您的Java,那麼你就需要使用多個if-else結構:

[...] 
if(VARIABLE.equals("start")){ 
    System.out.println("Machine started!"); 
} else if(VARIABLE.equals("stop")){ 
    System.out.println("Machine stopped!"); 
} else { 
    System.out.println("Invalid command"); 
} 
[...]