2012-09-20 36 views
6

我試圖編譯和我得到這個錯誤:交換機聲明爲不兼容的類型錯誤

enigma/Rotor.java:30: incompatible types found : java.lang.String required: int  switch(name){ 
1 error 

爲什麼會出現這個錯誤?我如何解決它?它在包中,我似乎無法弄清楚。下面的代碼:

與字符串
String label; 

Rotor(){;} 

Rotor(String name){ 
    switch(name){ 
    case "B": 
     conversion_chart = B; 
     break; 
    case "C": 
     conversion_chart = C; 
     break; 
    case "I": 
     conversion_chart=I; 
     notch = NOTCH[0]; 
     break; 
    case "II": 
     conversion_chart=II; 
     notch = NOTCH[1]; 
     break; 
    case "III": 
     conversion_chart=III; 
     notch = NOTCH[2]; 
     break; 
    case "IV": 
     conversion_chart=IV; 
     notch = NOTCH[3]; 
     break; 
    case "V": 
     conversion_chart=V; 
     notch = NOTCH[4]; 
     break; 
    case "VI": 
     conversion_chart=VI; 
     notch = NOTCH[5]; 
     break; 
    case "VII": 
     notch = NOTCH[6]; 
     conversion_chart=VII; 
     break; 
    case "VIII": 
     notch = NOTCH[7]; 
     conversion_chart=VIII; 
     break; 
    } 
    label = name; 
    position = 0; 
} 

回答

8
switch(name) 

switch語句從Java7起只支持。

我猜你正在使用的編譯器版本低於Java7

選項:

1) You need to either upgrade to Java7 
2) Change switch statement to `if/else` 
3) Use `int` in switch instead of `String` 
+0

我需要什麼,以使這方面的工作,然後解決? – user1514362

+1

你需要升級你的Java到Java7 – kosa

+0

如果這仍然失敗,它可能是你的IDE。對於intelliJ,進入'文件>項目結構>項目>項目語言級別'並設置爲7以上 –

0

不能切換String實例,僅INT(和字節/字符/短,但時間不長/ double),除非你有Java7 +。你最好的選擇現在是改變的if else語句,就像這樣:

if("B".equals(string)) { 
    //handle string being "B" 
} else if("C".equals(string)) { 
    //handle string being "C" 
} else ... 

有關開關的詳細信息,請參閱Oracle tutorial。他們提到Java7字符串功能:

In Java SE 7 and later, you can use a String object in the switch statement's expression.

+0

你能舉個例子嗎? – user1514362

+0

@ user1514362查看編輯 –

+0

switch(name)呢? – user1514362

-1

在Java中,只能在byte,char,short或int上進行切換,而不能在String上進行切換。

+2

除非您使用Java 7或更新版本 - 請參閱其他答案。 – Windle

+0

是的,真的夠了。 –

3

開關接受來自java的字符串7之前的Java 7種只有INT兼容的類型(短,字節,整型,字符)可以作爲開關參數傳遞

+0

可以downvoter發表評論?? – PermGenError

+0

我真的很抱歉。我一直在試圖消除這個倒退,它告訴我我不能改變我的投票。這是一個意外的倒退,是否有撤消? – krico

+0

@krico我剛剛編輯了我的文章,現在可以恢復您的downvote .. :) – PermGenError

相關問題