Java 尝试使用Scanner.nextDouble()读取32.5时出现InputMismatchException

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

如何在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.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