2015-04-29 8 views
5

क्या एकाधिक if कथन और if-else-if कथन लिखने के बीच कोई अंतर है?क्या एकाधिक 'if' कथन और 'if-else-if' परस्पर अनन्य स्थितियों के लिए समान हैं?

जब मैंने एकाधिक if कथनों के साथ एक प्रोग्राम लिखने का प्रयास किया, तो उसने अपेक्षित नतीजे नहीं दिए, लेकिन यह if-else-if के साथ काम किया।

शर्तें पारस्परिक रूप से अनन्य थीं।

+3

जब तक कि शर्तें पारस्परिक रूप से अनन्य न हों, फिर हां, इससे कोई फर्क पड़ता है। – dcastro

+3

_ "जब मैंने कई 'अगर' कथन के साथ एक प्रोग्राम लिखने की कोशिश की, तो उसने अपेक्षित नतीजे नहीं दिए। लेकिन 'अगर और अगर' यह काम करता है।" _ मुझे लगता है कि आपने अभी अपने प्रश्न का उत्तर दिया है ... –

+0

"अगर" कई भाषाओं में कथन मौजूद हैं, और प्रोग्रामिंग के मूलभूत सिद्धांतों में से एक हैं। यह साइट क्यू एंड ए के बारे में विशिष्ट प्रोग्रामिंग समस्याओं के बारे में है, इसलिए ऐसी चर्चा यहां बहुत व्यापक और ऑफ-विषय होगी। – Abhay

उत्तर

8

जब आप बयानों को एकाधिक लिखते हैं, तो यह संभव है कि उनमें से एक से अधिक का मूल्यांकन किया जाए, क्योंकि बयान एक दूसरे से स्वतंत्र हैं।

जब आप एक और लिखते हैं तो यदि कोई और-अगर ... और कथन, केवल एक शर्त का मूल्यांकन किया जा सकता है (एक बार पहली शर्त जो सत्य का मूल्यांकन करती है, तो अगली और यदि शर्तों को छोड़ दिया जाता है)।

यदि आप कथन एक सिंगल की तरह व्यवहार करते हैं तो यदि आप कथन करते हैं तो प्रत्येक से अधिक ब्लॉक कर सकते हैं यदि अन्य कथन ब्लॉक ब्लॉक से बाहर हो जाते हैं जिसमें बयान शामिल है (उदाहरण के लिए, विधि से वापस लौटने या तोड़ने से एक लूप)।

उदाहरण के लिए:

public void foo (int x) 
{ 
    if (x>5) { 
     ... 
     return; 
    } 
    if (x>7) { 
     ... 
     return; 
    } 
} 

रूप में एक ही व्यवहार होगा:

public void foo (int x) 
{ 
    if (x>5) { 
     ... 
    } 
    else if (x>7) { 
     ... 
    } 
} 

लेकिन वापसी बयान के बिना यह अलग व्यवहार करना होगा जब एक्स> 5 और एक्स> 7 दोनों सही हैं।

0

कोई भी समान नहीं है। यदि बयान सभी शर्तों की जांच करेगा। यदि आप कथन में एकाधिक लिखेंगे तो यह हर शर्त की जांच करेगा। यदि यह संतुष्ट होने तक शर्तों की जांच करेगा। एक बार अगर/संतुष्ट हो तो वह उस ब्लॉक से बाहर हो जाएगा।

0

हां, यह एक फर्क पड़ता है: The if-then and if-then-else Statements देखें।

इसके अलावा, आप आसानी से इसका परीक्षण कर सकते हैं।

कोड # 1:

int someValue = 10; 

    if(someValue > 0){ 
     System.out.println("someValue > 0"); 
    } 

    if(someValue > 5){ 
     System.out.println("someValue > 5"); 
    } 

विल उत्पादन:

someValue > 0 
someValue > 5 

जबकि कोड # 2:

int someValue = 10; 

    if(someValue > 0){ 
     System.out.println("someValue > 0"); 
    }else if(someValue > 5){ 
     System.out.println("someValue > 5"); 
    } 

विल केवल उत्पादन:

someValue > 0 

जैसा कि आप देख सकते हैं, कोड # 2 दूसरे ब्लॉक पर कभी नहीं जाता है, क्योंकि पहला कथन (कुछ वैल्यू> 0) true का मूल्यांकन करता है।

0
if() 
{ 
stmt.. 
} 
else 
{ 
stmt 
} 
if() 
{ 
stmt 
} 
here compiler will check for both the if condition. 

कोड संकलक के नीचे fragement में जैसे ही पहले के रूप में, अगर शर्तों की जांच करता है, तो हालत बाईपास हो सकता है अगर हालत सही शेष मिल जाएगा।

 if(){ 

     } 
     else if 
     { 

     } 
     else if 
     { 

     } 
     else if 
     { 

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