Java 尝试使用Scanner.nextDouble()读取32.5时出现InputMismatchException
如何在Java中使用tryparce来解决以下问题? 代码示例很有帮助Java 尝试使用Scanner.nextDouble()读取32.5时出现InputMismatchException,java,Java,如何在Java中使用tryparce来解决以下问题? 代码示例很有帮助 Enter first number: 32.5 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.next
Enter first number:
32.5
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at basicCalculator.BasicCalculator.main(BasicCalculator.java:8)
TL;DR:useLocale(Locale.ROOT)
我运行了您的程序并输入了32.5
和1000
,没有错误。然后我把电脑的通用格式改成德语,然后再次运行。这次我看到了和你问题中相同的stacktrace。接下来,我将扫描仪的初始化更改为:
Scanner input = new Scanner(System.in).useLocale(Locale.ROOT);
现在,您的程序又像我想的那样工作了:
Enter first number:
32.5
Enter 2nd number:
1,000
1032.5
该代码应该可以工作。请尝试重新编译并再次运行它。可能相关:@HovercraftFullOfEels根据用户屏幕截图中的时钟判断,他可能坐在中欧,其区域设置为德语/西班牙语/法语或类似语言,因此必须用逗号输入数字。user3909365:尝试将“32,5”作为输入。@OleV.V。我自己也试过了(我自己也在德国),当输入小数点的数字时,我也会遇到输入不匹配的异常。java类在这方面的不一致性实际上是相当令人讨厌的。有些类使用区域设置(就像scanner似乎所做的那样),而另一些类则像BigDecimal的字符串构造函数一样只支持point。真希望java能选择一种方法并坚持下去-/
Enter first number:
32.5
Enter 2nd number:
1,000
1032.5