दिलचस्प पोस्ट
डीजेंगो का उपयोग करके अद्वितीय अपलोड फ़ाइल नामों को लागू करें? गैर अवरुद्ध pthread_join जावा या वेनिला जावास्क्रिप्ट में डोम उत्परिवर्तन की घटना सी में एक ऑब्जेक्ट फ़ाइल क्या है? क्या मैं sass के साथ एक बाहरी होस्ट की गई फ़ाइल आयात कर सकता हूं? अप्रयुक्त जावास्क्रिप्ट फ़ंक्शंस खोजें? मैं Stemming या Lemmatization शब्द कैसे करूं? JPA EntityManager: मर्ज () पर क्यों जारी रहती है ()? विभिन्न लंबाई के साथ बहुआयामी सरणी इकाई फ़्रेमवर्क डेटा संदर्भ केवल पढ़ने के लिए कैसे करें कैसे मेवेन प्लगइन निष्पादन को कमांड लाइन से सीधे निष्पादित करें? ऊंट-सीज़ित टोकन के शब्दों के बीच रिक्त स्थान सम्मिलित करें ईओनिक 2 में पक्ष मेनू के साथ nav.push का उपयोग करें जावा गणन और इटरेटर के बीच का अंतर सी + + हाइबरनेट में समस्या का समाधान क्या है?

जबकि इस पाश के साथ क्या गलत है?

boolean r = false ; int s = 0 ; while (r == false) ; { s = getInt() ; if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ; else r = true ; } 

टेक्स्ट कभी भी खुद को प्रदर्शित नहीं करता है जब 3 या 123 दर्ज किया जाता है और लूप समाप्त नहीं होता है क्या यहाँ गलत है?

Solutions Collecting From Web of "जबकि इस पाश के साथ क्या गलत है?"

हालत के बाद आपके पास एक अर्धविराम है जब आप अपने लिए एक ब्लॉक निर्दिष्ट करने के लिए ब्रेसिज़ का उपयोग while हैं, तो आप अर्धविराम का उपयोग नहीं करते हैं।

हटाए ';' थोड़ी देर के बाद।

दूसरों ने बग को इंगित किया है, लेकिन आपका कोड अन्य तरीकों से डरावना है जो अंततः आपको भ्रमण करेगा:

 if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ; else r = true ; 

यह बुरा है क्योंकि आप आसानी से एक या अधिक खंड के मामले में चलाने के लिए एक से अधिक कथन का इरादा कर सकते हैं घुंघराले ब्रेसिज़ का उपयोग करें और एक पंक्ति पर सशर्त बयान रखने से बचें:

 if (!(s>=0 && s<=2)) { System.out.println ("try again not a valid response"); } else { r = true; } 

मुश्किल से देखने वाली बगों को पढ़ने के लिए आसान और कम होने की संभावना है

जबकि (आर == गलत)

होना चाहिए

जबकि (! r)

अर्धविराम के बारे में बाकी सभी ने क्या कहा, इसके बावजूद मुझे लगता है कि इसके साथ गलत है 🙂

+1 करने के लिए डैनियल DiPaolo मैंने सोचा था कि मैं ऐसा क्यों बताता हूं कि यह क्यों मामला है।

जबकि जावा में लूप दो तरह से एक में लिखे जा सकते हैं। यदि लूप के शरीर में सिर्फ एक पंक्ति होती है, तो आप उन्हें एक लघु-हाथ फैशन में लिख सकते हैं:

 while (true) System.out.println("While loop"); 

यह प्रोग्राम समाप्त होने तक कंसोल पर "while loop" प्रिंट करेगा। दूसरा विकल्प है ब्रेसिज़ के बीच लूप बॉडी निर्दिष्ट करना, जैसा आपने ऊपर किया है:

 int i = 0; while (i < 10) { System.out.println("i = " + i); i++; } 

यह एक अलग रेखा पर प्रत्येक "i = 0", "i = 1", …, "i = 9" प्रिंट करेगा।

आपके द्वारा पोस्ट किए गए कोड दो को भ्रमित कर रहा है। लूप में शॉर्ट-हाथ में, जावा पार्सर को लूप की स्थिति और अर्द्ध-बृहदान्त्र के बीच एक बयान लगाने की उम्मीद है। क्योंकि यहां एक बयान नहीं मिला है, जबकि लूप चलता है, लेकिन कुछ भी नहीं; इसमें कोई शरीर नहीं है इसके अलावा, क्योंकि लूप का कोई शरीर नहीं है, आपके चर आर के लिए एक नया मान ग्रहण करने का कोई अवसर नहीं है; हालत हमेशा सच का मूल्यांकन करती है और पाश कभी नहीं निकलता है

यदि आप अपने उदाहरण में लूप में स्थिति को नकारने के लिए थे, यानी,

 boolean r = false ; int s = 0 ; while (r != false) ; { s = getInt() ; if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ; else r = true ; } 

(ध्यान दें कि मैंने गलत तरीके से सेमीकोलन छोड़ा है), आपको पता चल जाएगा कि आपका इच्छित लूप बॉडी ठीक एक बार निष्पादित करेगा, क्योंकि लूप कभी भी नहीं चलता।

अन्य टिप्पणियों के अलावा, आप को भी अगर को बदलना चाहिए

 if (s < 0 || s > 2) 

यह इस तरह से और अधिक समझ में आता है।

असंबंधित उत्तर, मैं सचमुच आपको सन की शैली दिशा-निर्देशों का पालन करने की सलाह देता हूं।

 boolean r = false ; int s = 0 ; while (r == false) { s = getInt() ; if (!(s>=0 && s<=2)) { System.out.println ("try again not a valid response") ; } else { r = true ; } } 

आप r वैरिएबल और if / else कंडीशन से छुटकारा पा सकते हैं यदि आप परिणाम को लूप में स्वयं का मूल्यांकन करते हैं

 int s = 0; while( ( s = getInt() ) < 0 || s > 2 ) { System.out.println( "Try again, not a valid response"); }