2013-07-19 67 views
1

我是Android Dev的初學者。我剛剛遇到了這個問題,在一根繩子上的開關case語句:開關語句在Android項目中不起作用

String str = "Hello"; 
switch (str) { 
    case "Hello": 
     System.out.println("case 1");break; 
    default: 
     System.out.println("default");break; 
} 

Eclispse日誌:

Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted Home.java 

所以我打算到項目屬性 - > Java編譯器,我設置JDK到1.7並應用它。但現在eclipse尾巴我修復屬性回滾到第一個問題...

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties. 

我該如何解決它使用我的開關情況?

謝謝

+0

您可以修復只使用整數切換 – Blackbelt

+0

右鍵單擊在Eclipse項目。轉到Android工具。點擊修復項目屬性。 – Raghunandan

+0

您無法在switch語句中傳遞字符串 –

回答

4

您需要在switch語句中傳遞數值或字符值。例如,

char str = 'A'; 
switch (str) { 
    case 'A': 
     System.out.println("case 1");break; 
    default: 
     System.out.println("default");break; 
} 
+1

最後,我將創建一個if條件,它將很好地工作。 謝謝 – Wildchild7

1

是的開關語句與String類在Java 1.7中引入。但Android的工作與1.6抱歉。查看文檔,瞭解可以使用的類型。我不知道情況,但Enums和switch語句非常好用

0

在eclipse屬性中將您的編譯器版本降低到1.6。 Android尚不支持全部1.7。

enter image description here

0

作出明確的情況下,在開關,你可以用枚舉

public enum helloEnum { 
    HELLO, HOLA, CIAO 
} 


public class EnumTest { 
    helloEnum mHello; 

    public EnumTest(helloEnum mHello) { 
     this.mHello = mHello; 
    } 

    public void sayHello() { 
     switch (mHello) { 
      case HELLO: 
       System.out.println("hello"); 
       break; 

      case HOLA: 
       System.out.println("hola"); 
       break; 

      case CIAO 
       System.out.println("ciao"); 
       break; 

      default: 
       System.out.println("hello"); 
       break; 
     } 
    } 
}