首页 >Java >java教程 >使用Java Scanner读取Double值时如何解决InputMismatchException?

使用Java Scanner读取Double值时如何解决InputMismatchException?

Susan Sarandon
Susan Sarandon原创
2024-12-09 06:15:161006浏览

How to Resolve InputMismatchException When Reading Double Values with Java Scanner?

扫描器双值 - InputMismatchException 已解决

使用扫描器读取双值时遇到 InputMismatchException 是 Java 开发人员面临的常见问题。当从输入检索到的标记与预期数据类型不匹配或超出该类型的范围时,会发生此异常。

问题:

考虑以下代码:

double gas, efficiency, distance, cost;
Scanner scanner = new Scanner(System.in);

System.out.print("Enter the number of gallons of gas in the tank: ");
gas = scanner.nextDouble();
System.out.print("Enter the fuel efficiency: ");
efficiency = scanner.nextDouble();

当运行此代码并输入诸如“5.1”之类的气体和效率值时,它会抛出一个InputMismatchException。

原因:

扫描仪使用的默认区域设置可能与输入值的预期格式不匹配。例如,在使用“,”作为小数分隔符的区域设置中,像“5,1”这样的输入将被解释为有效的双精度值,而在使用“.”的区域设置中。用作分隔符,则不会。

解决方案:

要避免此问题,需要使用 useLocale() 指定扫描仪的区域设置方法。

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

通过将区域设置设置为 Locale.US,扫描仪将期望采用美国格式的值,其中“。”用于小数分隔符。

说明:

useLocale() 方法允许开发人员定义扫描仪用于解析值的区域设置。这可确保扫描器期望指定区域设置的正确格式的值。

以上是使用Java Scanner读取Double值时如何解决InputMismatchException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn