2017-01-16 11 views
-1

Java電卓をコーディングしようとしています。以下の計算しようとしたときに、いくつかのNumberFormatの例外に実行しています:2つの整数を掛け合わせるときのNumberFormatException

99.9(4x/8+k) 

面白いことに、私は99.9との積は、「k」は以上である場合にのみ、99.9を配布した後、そのは私にエラーを与えていることですだから、10より大きい値。私のコードでは、式のすべての定数の合計で文字列変数をロードしようとすると、エラーが発生します。 は、ここでは、コードは次のようになります。

double constantSum = 0; 
//create a stringtokenizer object and convert each token to a double as 
//follows, then, add the double to constantSum 
constantSum = constantSum + Double.valueOf(token);//the token comes 
//from the stringtokenizer object 

は、Double.valueOf(トークン)を受信する入力が 99.9と11の積である1098.900で、入力がで 千の位を四捨五入してきたことに気付きますコードで初期化されたNumberFormatオブジェクト。入力文字列の場合:スレッド「メイン」java.lang.NumberFormatExceptionで 例外:

このNumberFormatは例外ここ

を取り除く方法上の任意のアイデアは、例外がどのように見えるかの詳細です「1,098.900 「sun.misc.FloatingDecimal.parseDoubleでsun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) で (FloatingDecimal.java:110)

おかげ

+0

あなたは間違っています、入力は '1098.900'ではなく、' 1,098.900'です。エラーメッセージを参照してください。なぜあなたはその中間値をコード内の文字列として持つことになりますか? – Andreas

+0

[NumberFormatExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/39849984/what-is-a-numberformatexception-and-how-can-i-fix-it) – xenteros

答えて

2

EX文字はtoken文字列の中のカンマによって引き起こされている可能性があります。クイックフィックスのために、すべてのコンマを取り除くことができます:

constantSum += Double.valueOf(token.replaceAll(",", "")); 
               ^^^^ this removes all commas 
0

ダブルクリックしたい文字列にコンマを入れることはできません。カンマを削除するとうまくいくはずです。

関連する問題