Rumah > Java > javaTutorial > Mengapa Pengimbas Saya Melemparkan InputMismatchException Apabila Membaca Double, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Pengimbas Saya Melemparkan InputMismatchException Apabila Membaca Double, dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-06 09:43:10
asal
201 orang telah melayarinya

Why Does My Scanner Throw an InputMismatchException When Reading a Double, and How Can I Fix It?

Nilai berganda pengimbas - InputMismatchException

InputMismatchException dilemparkan apabila Pengimbas cuba mendapatkan token yang tidak sepadan dengan jenis yang dijangkakan, atau apabila token itu kehabisan julat untuk jenis.

Dalam kod yang disediakan, anda menggunakan Pengimbas untuk membaca dua kali nilai yang mewakili bilangan gelen gas dalam tangki. Walau bagaimanapun, tempattempat lalai Pengimbas ialah tempattempat lalai sistem, yang mungkin mengharapkan koma (",") sebagai pembatas perpuluhan dan bukannya titik (".").

Sebab Pengecualian:

Pengecualian berlaku kerana nombor yang dimasukkan sebagai input (cth., "5.1") tidak sepadan dengan format yang dijangkakan. Tempatan Pengimbas lalai menjangkakan nombor akan diformatkan dengan koma sebagai pemisah perpuluhan. Input anda, walau bagaimanapun, menggunakan titik sebagai pemisah perpuluhan, yang melanggar format yang dijangkakan.

Cara Menghindari Masalah:

Untuk menyelesaikan isu ini, anda boleh tentukan tempat yang menggunakan titik sebagai pemisah perpuluhan menggunakan kaedah useLocale(). Contohnya:

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Salin selepas log masuk

Dengan menyatakan Locale.US, anda memastikan bahawa Pengimbas menggunakan tempat AS, yang menggunakan titik sebagai pemisah perpuluhan. Dengan cara ini, Pengimbas akan mentafsir input dengan betul sebagai nilai berganda.

Pilihan lain, jika anda ingin mengekalkan tempat lalai sistem tetapi membenarkan kedua-dua koma dan titik sebagai pemisah perpuluhan, ialah menggunakan ungkapan biasa untuk menghuraikan rentetan input dan menukarnya secara manual kepada dua:

String input = scanner.nextLine();
double value = Double.parseDouble(input.replace(",", "."));
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Pengimbas Saya Melemparkan InputMismatchException Apabila Membaca Double, dan Bagaimana Saya Boleh Membetulkannya?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan