2017-02-15 20 views
-1

Javaでtryparceを使用して以下の問題を解決するにはどうすればよいですか? コード例が参考になります。Scanner.nextDouble()で32.5を読み取ろうとするとInputMismatchExceptionが発生する

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

おそらく関連している:[Input Mismatch Exception](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 
関連する問題