首页 >Java >java教程 >为什么在输入 Double 值时 Scanner.nextDouble() 会抛出 InputMismatchException?

为什么在输入 Double 值时 Scanner.nextDouble() 会抛出 InputMismatchException?

Linda Hamilton
Linda Hamilton原创
2024-11-06 19:42:031071浏览

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