2012-09-20 16 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

आपको अपने जावा को जावा 7 – kosa

+0

पर अपग्रेड करना होगा और यदि यह अभी भी विफल रहता है, तो यह आपका आईडीई हो सकता है। इंटेलिजे के लिए, 'फाइल> प्रोजेक्ट स्ट्रक्चर> प्रोजेक्ट> प्रोजेक्ट लैंग्वेज लेवल' पर जाएं और 7 और ऊपर –

0

आप एक स्ट्रिंग उदाहरण पर स्विच नहीं कर सकते, केवल पूर्णांक (और बाइट/चार/कम है, लेकिन लंबे समय तक नहीं/डबल), जब तक आपके पास Java7 + नहीं है।

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

स्विचिंग बारे में अधिक जानकारी के लिए, Oracle tutorial देखें: आपका सबसे अच्छा विकल्प अब बदलने के लिए करने के लिए यदि किसी और बयान, इसलिए की तरह है।

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

+0

पर सेट करें क्या आप मुझे एक उदाहरण दे सकते हैं ?? – user1514362

+0

@ user1514362 संपादित करें –

+0

स्विच (नाम) के बारे में क्या? – user1514362

-1

जावा में, आप केवल एक स्विच बाइट, चार, लघु, या पूर्णांक पर कर सकते हैं, और नहीं एक स्ट्रिंग: वे Java7 स्ट्रिंग कार्यक्षमता का उल्लेख है।

+2

काम करने के लिए आपको अपने स्विच स्टेटमेंट को हटाना होगा जब तक कि आप जावा 7 या नए का उपयोग नहीं कर रहे हैं - अन्य उत्तरों देखें। – Windle

+0

हाँ, पर्याप्त सच है। –

3

स्विच जावा 7 से स्ट्रिंग स्वीकार करता है। जावा से पहले 7 केवल पूर्णांक संगत प्रकार (लघु, बाइट, int, चार) स्विच तर्क के रूप में पारित किया जा सकता है

+0

क्या डाउनवॉटर एक टिप्पणी छोड़ सकता है ?? – PermGenError

+0

मुझे इसके बारे में वास्तव में खेद है। मैं इस डाउनवोट को हटाने की कोशिश कर रहा हूं और यह मुझे बताता है कि मुझे अपना वोट बदलने की अनुमति नहीं है। यह एक आकस्मिक डाउनवोट था, क्या कोई पूर्ववत है? – krico

+0

@krico मैंने अभी अपनी पोस्ट संपादित की है, अब आप अपना डाउनवोट वापस कर सकते हैं .. :) – PermGenError

संबंधित मुद्दे