"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية منع الحلقات اللانهائية عند التعامل مع InputMismatchException في Java؟

كيفية منع الحلقات اللانهائية عند التعامل مع InputMismatchException في Java؟

تم النشر بتاريخ 2024-12-23
تصفح:562

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

حلقة لا نهائية في محاولة/التقاط الحظر باستخدام InputMismatchException: حل

يواجه برنامج Java الخاص بك حلقة لا نهائية عند التعامل مع InputMismatchException في محاولة /catch block أثناء أخذ مدخلات عددية من المستخدم. ينبع هذا السلوك من حقيقة أنه بعد التقاط InputMismatchException، يظل الماسح الضوئي في حالة غير صالحة، مما يؤدي إلى تكرار الحلقة إلى أجل غير مسمى.

لحل هذه المشكلة، يجب عليك تنفيذ العمليات التالية داخل كتلة الصيد :

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next(); // Move to the next line to avoid the infinite loop
}

تقدم طريقة input.next() مؤشر الماسح الضوئي إلى السطر التالي، مما يؤدي بشكل فعال إلى تجاهل أي إدخال غير صالح تسبب في الاستثناء.

بدلاً من ذلك، يمكنك استخدام طريقة hasNextInt() قبل محاولة قراءة عدد صحيح، وبالتالي التأكد من أن القيمة التي تتم قراءتها هي بالفعل عدد صحيح. يلغي هذا الأسلوب الحاجة إلى معالجة الاستثناءات تمامًا:

while (true) {
    if (input.hasNextInt()) {
        n1 = input.nextInt();
        break;
    } else {
        input.next(); // Skip non-numeric input
    }
}

تذكر أن وثائق Java Scanner تنص على أنه بعد طرح InputMismatchException، لن يقوم الماسح الضوئي بتمرير الرمز المميز المسؤول عن الاستثناء، مما يتطلب استرداده أو تجاوزه من خلال وسائل أخرى. من المفترض أن يؤدي تنفيذ هذه التعديلات إلى تخفيف مشكلة الحلقة اللانهائية في برنامج Java الخاص بك.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3