首頁 >Java >java教程 >為什麼輸入 Double 值時 Scanner.nextDouble() 會拋出 InputMismatchException?

為什麼輸入 Double 值時 Scanner.nextDouble() 會拋出 InputMismatchException?

Linda Hamilton
Linda Hamilton原創
2024-11-06 19:42:031065瀏覽

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

對雙值輸入中的InputMismatchException 錯誤進行故障排除

使用雙值時,使用Scanner.nextDouble() 時通常會遇到InputMismatchException讀取輸入。當使用者輸入無效的雙精度值(例如沒有小數點的字串或整數)時,會發生此異常。

考慮以下程式碼:

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;
}

此程式碼驗證使用者輸入指定範圍內的雙精確值。但是,如果使用者輸入像「1.2」這樣的值(使用點作為小數點分隔符號),則會拋出 InputMismatchException。

要解決此問題,請確保使用逗號 (,) 而不是輸入雙精度值時使用點 (.) 作為小數點分隔符號。例如,輸入“1,2”而不是“1.2”。或者,您可以使用不同的方法,例如 Scanner.next() 並手動將輸入解析為雙精度,處理可能發生的任何異常。

以上是為什麼輸入 Double 值時 Scanner.nextDouble() 會拋出 InputMismatchException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn