2011-08-09 28 views
6

के साथ सहायता मैं जावा के लिए अपेक्षाकृत नया हूं। switch कथन में, क्या आपको प्रत्येक case के बाद break कथन डालना होगा?स्विच स्टेटमेंट

+3

http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

उत्तर

5

आपको प्रत्येक मामले के बाद तोड़ना नहीं है, लेकिन यदि आप नहीं करते हैं तो वे एक-दूसरे में बह जाएंगे। कभी-कभी आप ब्रेक छोड़कर कई मामलों को एक साथ बंडल करना चाहते हैं।

3

यह बेहतर है कि आप ऐसा करें। अन्यथा अगले बयान भी निष्पादित किए जाएंगे।

switch(someNumber) { 
case thisCaseMatches: 
    doThat(); 
case thisCaseDoesNotMatch: 
    shouldntExecuteYetItWillBeExecuted(); 
default: 
    alsoWillbeExecuted(); 
} 
2

शब्दार्थ हाँ। अन्यथा पहले मिलान करने वाले के बाद सभी केस स्टेटमेंट चलाए जाएंगे।

7

नहीं, आपको नहीं करना है। यदि आप break कथन को छोड़ देते हैं, तो switch ब्लॉक के अंदर शेष बकाया बयान निष्पादित किए जाते हैं, भले ही case मान का परीक्षण किया जा रहा हो।

यह अवांछित परिणाम कभी कभी का उत्पादन कर सकते हैं, तो निम्न कोड में के रूप में:

You got an A! 
You got a B. 
You got a C. 
You got a D. 
You failed. :(
3

आप कार्य करें:

switch (grade) { 
    case 'A': 
     System.out.println("You got an A!"); 
     //Notice the lack of a 'break' statement 
    case 'B': 
     System.out.println("You got a B!"); 
    case 'C': 
     System.out.println("You got a C."); 
    case 'D': 
     System.out.println("You got a D."); 
    default: 
     System.out.println("You failed. :("); 
} 

आप grade चर करने के लिए 'ए' की स्थापना की, तो यह आपके परिणाम होगा यदि आप return या अन्य क्रिया के साथ switch कथन से बाहर नहीं निकल रहे हैं।

2

प्रत्येक कथन के बाद ब्रेक डालने का एक अच्छा अभ्यास है।

आपको मजबूर नहीं किया गया है।

लेकिन यदि आप ब्रेक टेटमेंट नहीं डालते हैं तो आपने स्विच स्टेटमेंट को कैस्केड किया है, अर्थात् अधिक स्थिति मिलान की जा सकती है, और कभी-कभी इससे तार्किक त्रुटियां हो सकती हैं।

हालांकि ऐसे लोग हैं जो सोचते हैं कि कैस्केड कथन कोड को अनुकूलित कर सकते हैं, कम कोड लिखने में मदद कर सकते हैं।

+0

यह (केवल) "अच्छा अभ्यास" नहीं है, यह अर्थात् आवश्यक है या नहीं! –

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