我正在制作一个图形计算器,允许计算有错误的数据(即5 + -0.02)。我创建了一个名为Numbers3
的对象,其属性中有一个BigDecimal
变量。当我通过控制台输入数据时,一切正常。当我试图从JTable
检索数据时出现问题;我将对象转换为String
,但当它面临BigDecimal(String)
时会引发异常:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:470)
at java.math.BigDecimal.<init>(BigDecimal.java:739)
这就是我从JTable
到String
获取对象的方法。这是有效的,因为当我从.getClass()
打印返回时,输出为java.lang.String
):
String number = (String)(table.getValueAt(i,j));
还尝试了其他几个选项,例如:
String number=new String(String.valueOf(table.getValueAt(i,j));
我真的很感激这个问题的任何帮助。
答案 0 :(得分:0)
尝试规范化字符串以符合BigDecimal要求:
private static BigDecimal parse(String str) {
String normalized = str.replaceAll("\\s", "").replace(',', '.');
return new BigDecimal(normalized);
}
上面的代码从输入字符串中删除所有空白字符(BigDecimal构造函数中不允许这样做)。
更重要的是 - 如果需要,它会将逗号替换为小数点。