我正在尝试编写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)
感谢
答案 0 :(得分:2)
异常可能是由token
字符串中的逗号引起的。要快速修复,您可以尝试删除所有逗号:
constantSum += Double.valueOf(token.replaceAll(",", ""));
^^^^ this removes all commas
答案 1 :(得分:0)
你不能在要变成双精度的字符串中使用逗号。删除逗号,它应该可以工作。