2012-09-20 18 views
6

verir ve bu hatayı alıyorum:Anahtarı Tablosu ben derlemek çalışıyorum Uyumsuz Türleri hata

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

Neden şu hatayı alıyorum? Nasıl düzeltebilirim? Paketin içinde ve bunu anlayamıyorum. İşte kod: Dize ile

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

cevap

8
switch(name) 

switch ifadesi itibaren sadece Java7 desteklenmektedir.

Ben kullandığınız derleyici sürümü Java7 daha az olduğunu tahmin

Seçenekler:

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

Ne o zaman bu çalışmaya zorlamak amacıyla düzeltmek gerekir? – user1514362

+1

Java'nızı Java7'ye yükseltmeniz gerekiyor – kosa

+0

Ve eğer bu hala başarısız olursa IDE'niz olabilir. IntelliJ için, 'Dosya> Proje Yapısı> Proje> Proje Dili Seviyesi'ne gidin ve 7'ye ve –

0

Bir dize örneği üzerinde geçemezsiniz, sadece int (ve bayt/karakter/kısa ama uzun sürmez/double), Java7 + yoksa. anahtarlama hakkında daha fazla bilgi için

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

Oracle tutorial bkz: En iyi seçenek şimdi çok gibi başka tablolar, eğer değiştirmektir.

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

+0

'a ayarlayın. Bana bir örnek verebilir misiniz? – user1514362

+0

@ user1514362 bkz. Düzenle –

+0

Anahtar (isim) hakkında ne var? – user1514362

-1

Java, yalnızca byte, char kısa veya int bir anahtar yapabilir ve bir dize: Onlar Java7 Dize işlevini söz.

+2

Java 7 veya daha yeni bir sürüm kullanmıyorsanız diğer yanıtlara bakın. – Windle

+0

Evet, doğru. –

3

anahtarı, bir kabul eder java 7. önce java 7 sadece int uyumlu türleri anahtarı argüman olarak geçirilebilir (kısa, bayt, int, char)

+0

downvoter yorum bırakabilir mi? – PermGenError

+0

Bunun için gerçekten üzgünüm. Bu düşüşü kaldırmaya çalışıyorum ve oylarımı değiştirmem için bana izin verilmediğini söyledi. Kazara bir düşüş oldu, bir geri alma var mı? – krico

+0

@krico mesajımı yeni düzenledim, şimdi reddedebilirsin .. :) – PermGenError

İlgili konular