Rumah >Java >javaTutorial >Mengapa Scanner.nextDouble() Melemparkan InputMismatchException Apabila Memasukkan Nilai Berganda?
Menyelesaikan Masalah Ralat InputMismatchException dalam Input Nilai Berganda
Apabila bekerja dengan nilai berganda, adalah perkara biasa untuk menghadapi InputMismatchException apabila menggunakan Scanner.nextDouble() untuk membaca input. Pengecualian ini berlaku apabila pengguna memasukkan nilai berganda yang tidak sah, seperti rentetan atau integer tanpa titik perpuluhan.
Pertimbangkan kod berikut:
public double checkValueWithin(int min, int max) { double num; Scanner reader = new Scanner(System.in); num = reader.nextDouble(); // Throws InputMismatchException if input is invalid while (num < min || num > max) { System.out.print("Invalid. Re-enter number: "); num = reader.nextDouble(); } return num; }
Kod ini mengesahkan input pengguna untuk nilai berganda dalam julat yang ditentukan. Walau bagaimanapun, jika pengguna memasukkan nilai seperti "1.2" (menggunakan titik sebagai pemisah perpuluhan), ia akan membuang InputMismatchException.
Untuk menyelesaikan isu ini, pastikan anda menggunakan koma (,) dan bukannya titik (.) sebagai pemisah perpuluhan apabila memasukkan nilai berganda. Sebagai contoh, bukannya "1.2", masukkan "1,2". Sebagai alternatif, anda boleh menggunakan kaedah lain seperti Scanner.next() dan menghuraikan input secara manual sebagai dua kali ganda, mengendalikan sebarang pengecualian yang mungkin berlaku.
Atas ialah kandungan terperinci Mengapa Scanner.nextDouble() Melemparkan InputMismatchException Apabila Memasukkan Nilai Berganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!