InputMismatchException Nilai berganda Pengimbas
Pengaturcara Java lazimnya menghadapi InputMismatchException apabila cuba mengimbas nilai berganda menggunakan kaedah nextDouble(). Pengecualian ini menandakan percanggahan antara format data yang dijangkakan dan input sebenar yang diberikan.
Mengapa ia Berlaku
InputMismatchException berlaku apabila input tidak mematuhi angka yang dijangkakan format. Dalam coretan kod yang diberikan, pengimbas tidak dikonfigurasikan secara eksplisit dengan tempat. Ini mengakibatkannya menggunakan tempat lalai sistem, yang boleh mempunyai pemisah perpuluhan yang berbeza (cth., "," dan bukannya "." di sesetengah negara Eropah). Apabila pengimbas mentafsir input, ia menjangkakan perpuluhan yang dipisahkan koma, tetapi sebaliknya menemui titik (.).
Cara Menghindari Isu
Untuk menyelesaikan masalah ini isu, anda boleh menetapkan tempat pengimbas secara eksplisit kepada yang menggunakan pemisah perpuluhan yang dijangkakan. Ini memastikan bahawa pengimbas mentafsir input dengan betul berdasarkan tempat yang ditentukan.
Penyelesaian
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Dengan menggunakan Locale.US, pengimbas dikonfigurasikan untuk menggunakan tempat yang menjangkakan titik "." sebagai pemisah perpuluhan. Ini sejajar dengan format input yang anda jangkakan (5.1) dan menghalang InputMismatchException.
Atas ialah kandungan terperinci Mengapakah `Scanner.nextDouble()` Melemparkan `InputMismatchException` dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!