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 }
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 } }
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!