Rumah > Java > javaTutorial > teks badan

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

Linda Hamilton
Lepaskan: 2024-11-06 19:42:03
asal
1057 orang telah melayarinya

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;
}
Salin selepas log masuk

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!

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