Rumah >Java >javaTutorial >Mengapakah `Scanner.nextDouble()` Melemparkan `InputMismatchException` dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `Scanner.nextDouble()` Melemparkan `InputMismatchException` dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 05:31:13371semak imbas

Why Does `Scanner.nextDouble()` Throw an `InputMismatchException`, and How Can I Fix It?

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!

Kenyataan:
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