Rumah > Java > javaTutorial > Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan InputMismatchException di Java?

Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan InputMismatchException di Java?

DDD
Lepaskan: 2024-12-24 00:38:14
asal
389 orang telah melayarinya

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

Gelung Infinite dalam try/catch Block dengan InputMismatchException: Penyelesaian

Program Java anda menghadapi gelung tak terhingga apabila mengendalikan InputMismatchException dalam percubaan /catch block semasa mengambil input integer daripada pengguna. Tingkah laku ini berpunca daripada fakta bahawa selepas menangkap InputMismatchException, pengimbas kekal dalam keadaan tidak sah, yang membawa kepada pengulangan gelung selama-lamanya.

Untuk menyelesaikan isu ini, anda mesti melakukan operasi berikut dalam blok tangkapan :

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

Kaedah input.next() memajukan penuding pengimbas ke baris seterusnya, dengan berkesan membuang sebarang input tidak sah yang menyebabkan pengecualian.

Sebagai alternatif, anda boleh menggunakan kaedah hasNextInt() sebelum cuba membaca integer, dengan itu memastikan bahawa nilai yang dibaca sememangnya integer. Pendekatan ini menghapuskan keperluan untuk pengendalian pengecualian sama sekali:

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

Ingat, dokumentasi Pengimbas Java menyatakan bahawa selepas InputMismatchException dilemparkan, pengimbas tidak akan lulus token yang bertanggungjawab untuk pengecualian, memerlukan ia diambil semula atau dipintas melalui cara lain. Melaksanakan pengubahsuaian ini harus mengurangkan isu gelung tak terhingga dalam program Java anda.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan InputMismatchException di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan