Mengapa saya menghadapi InputMismatchException semasa cuba memasukkan nilai berganda?
Dalam kod yang disediakan, anda mengalami InputMismatchException kerana nextDouble( ) kaedah tidak mengendalikan input perpuluhan dengan betul.
Penjelasan:
Dalam kod anda, anda mempunyai baris berikut:
num = reader.nextDouble();
Baris ini cuba membaca nilai berganda daripada input standard menggunakan kaedah nextDouble() kelas Pengimbas. Walau bagaimanapun, apabila anda memasukkan nilai berganda dengan titik perpuluhan (cth., 1.2), ia tidak ditafsirkan dengan betul.
Penyelesaian:
Untuk menyelesaikan isu ini, anda harus mengubah suai kod anda untuk mengendalikan input perpuluhan dengan menukar pembatas input untuk membenarkan pemisah perpuluhan. Daripada menggunakan pembatas lalai (ruang putih), anda boleh menggunakan , (koma) sebagai pembatas baharu, membenarkan pengguna memasukkan nilai perpuluhan seperti 1,2.
Untuk melakukan ini, gunakan kaedah useDelimiter pada Objek pengimbas sebelum membaca input. Berikut ialah kod yang diubah suai:
Scanner reader = new Scanner(System.in).useDelimiter(",");
Dengan membuat perubahan ini, kaedah nextDouble() akan mentafsir input perpuluhan dengan betul dan anda tidak sepatutnya menemui InputMismatchException lagi.
Atas ialah kandungan terperinci Mengapa saya mendapat InputMismatchException apabila membaca nilai berganda daripada konsol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!