Rumah  >  Artikel  >  Java  >  Mengapa Scanner.nextDouble() Melemparkan InputMismatchException Apabila Memasukkan Nilai Berganda?

Mengapa Scanner.nextDouble() Melemparkan InputMismatchException Apabila Memasukkan Nilai Berganda?

Linda Hamilton
Linda Hamiltonasal
2024-11-06 19:42:03984semak imbas

Why Does Scanner.nextDouble() Throw an InputMismatchException When Inputting a Double Value?

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!

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