InputMismatchException के साथ ट्राई/कैच ब्लॉक में अनंत लूप: एक समाधान
एक प्रयास में InputMismatchException को संभालते समय आपका जावा प्रोग्राम एक अनंत लूप का सामना करता है / उपयोगकर्ता से पूर्णांक इनपुट लेते समय ब्लॉक को पकड़ें। यह व्यवहार इस तथ्य से उत्पन्न होता है कि InputMismatchException को पकड़ने के बाद, स्कैनर अमान्य स्थिति में रहता है, जिससे लूप अनिश्चित काल तक दोहराया जाता है।
इस समस्या को हल करने के लिए, आपको कैच ब्लॉक के भीतर निम्नलिखित ऑपरेशन करने होंगे :
catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Move to the next line to avoid the infinite loop }
इनपुट.नेक्स्ट() विधि स्कैनर पॉइंटर को अगली पंक्ति में ले जाती है, जिससे अपवाद उत्पन्न करने वाले किसी भी अमान्य इनपुट को प्रभावी ढंग से हटा दिया जाता है।
वैकल्पिक रूप से, आप पहले hasNextInt() विधि का उपयोग कर सकते हैं एक पूर्णांक को पढ़ने का प्रयास करना, जिससे यह सुनिश्चित हो सके कि पढ़ा जा रहा मान वास्तव में एक पूर्णांक है। यह दृष्टिकोण अपवाद प्रबंधन की आवश्यकता को पूरी तरह समाप्त कर देता है:
while (true) { if (input.hasNextInt()) { n1 = input.nextInt(); break; } else { input.next(); // Skip non-numeric input } }
याद रखें, जावा स्कैनर दस्तावेज़ में कहा गया है कि InputMismatchException फेंके जाने के बाद, स्कैनर अपवाद के लिए जिम्मेदार टोकन को पास नहीं करेगा, जिसके लिए इसे पुनर्प्राप्त करने या अन्य माध्यमों से बायपास करने की आवश्यकता होगी। इन संशोधनों को लागू करने से आपके जावा प्रोग्राम में अनंत लूप समस्या कम हो जाएगी।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3