2017-02-15 38 views
-1

如何在Java中使用tryparce来解决下面的问题? 代码检查很有帮助。InputMismatchException尝试读取32.5与Scanner.nextDouble()

enter image description here

enter image description here

import java.util.Scanner; 

class BasicCalculator { 
    public static void main(String args[]) { 
     Scanner input = new Scanner(System.in); 
     double fnum, snum, answer; // firstnumber, 2nd number, answer 
     System.out.println("Enter first number: "); 
     fnum = input.nextDouble(); 
     System.out.println("Enter 2nd number: "); 
     snum = input.nextDouble(); 

     answer = fnum + snum; 
     System.out.println(answer); 
    } 
} 

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) 
+1

该代码应该工作。 –

+0

尝试重新编译并再次运行。 –

+0

可能相关:[输入不匹配例外](http://stackoverflow.com/q/14027537/4204026) –

回答

1

TL; DR:useLocale(Locale.ROOT)

我跑过你的程序,输入32.51,000,没有错误。然后,我将计算机的通用格式更改为德语,然后再次运行。这次我看到了和你的问题一样的堆栈跟踪。接下来,我改变了Scanner来初始化:

Scanner input = new Scanner(System.in).useLocale(Locale.ROOT); 

现在你的程序再次工作,因为我觉得你的预期:

Enter first number: 
32.5 
Enter 2nd number: 
1,000 
1032.5