乘以两个整数时的NumberFormatException

时间:2017-01-16 04:27:57

标签: java numberformatexception

我正在尝试编写Java计算器。在尝试计算以下内容时遇到了一些NumberFormat异常:

99.9(4x/8+k)

有趣的是,只有当99.9和“k”的乘积大于或等于1000时,才会在分配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(令牌)收到的输入是1098.900,即 99.9和11的乘积,注意输入已四舍五入到 千位数由我在代码中初始化的NumberFormat对象放置。

有关如何摆脱此NumberFormat异常的任何想法

以下是异常的详细信息: 线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“1,098.900”     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)     在sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)

感谢

2 个答案:

答案 0 :(得分:2)

异常可能是由token字符串中的逗号引起的。要快速修复,您可以尝试删除所有逗号:

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

答案 1 :(得分:0)

你不能在要变成双精度的字符串中使用逗号。删除逗号,它应该可以工作。