2012-09-21 19 views
6

वास्तव में सरल सवाल है, लेकिन इसे समझ नहीं सकता है। Y नीचे (जावा) कोड में 2 की गणना क्यों करता है?जावा स्विच स्टेटमेंट + =/- = ऑपरेटर

int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: y += 1; 
    case 6: y -= 2; 
    default: y += 1; 
} 
+0

इस अपना होमवर्क है? (Http://meta.stackexchange.com/questions/18242/what-is-the-policy-here-on-homework) – Javier

उत्तर

5

यह डिफ़ॉल्ट के मामले से 6 मामले में 4 से के माध्यम से गिर जाता है, तो यह वृद्धि कर देता है (नई मूल्य: 3), 2 से decrements (नई मूल्य: 1) और फिर वृद्धि कर देता है (नई मूल्य: 2)।

संकलक आपको कम से कम -Xlint का उपयोग करने के बारे में चेतावनी देना चाहिए था। कभी भी हाथ से कंपाइलर चेतावनियों को अनदेखा न करें, और हमेशा -Xlint के साथ संकलित करें :)

2

आपने मामले के बाद ब्रेक नहीं जोड़ा। तो यह सभी कथन निष्पादित करता है। वाई = वाई + 1-2 + 1; 2

स्विच बयान होना चाहिए -

int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: y += 1;break; 
    case 6: y -= 2;break; 
    default: y += 1; 
} 

तो y 3

3

होगा आप break जोड़ने के लिए भूल गया: पहला मिलान मामले नीचे

int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: 
     y += 1; 
     break; 
    case 6: 
     y -= 2; 
     break; 
    default: y += 1; 
} 
1

सभी मामलों एक स्विच बयान में जब तक आप break; कथन जोड़ते हैं तब तक निष्पादित किया जाएगा।

आप y होने की उम्मीद तो 1 आपको बस इतना करना:

int x = 2; 
int y = 2; 
switch (x * 2){ 
case 4: y += 1; 
break; 
case 6: y -= 2; 
break; 
default: y += 1; 
} 
संबंधित मुद्दे