以下代码是否有意义?我基本上试图从JTable中读取值并将它们转换为double。但是我遇到了以下错误。具体而言,第1567行中的错误为percentageValueDouble=Double.parseDouble(percentageValueString);
但我不明白错误是什么意思或如何解决它们。
这是源代码:
if((gradesTable.getModel().getValueAt(i, j)!=null)&&(gradesTable.getModel().getValueAt(i, j)!="")){
percentageValueObject=gradesTable.getModel().getValueAt(i, j);
percentageValueString=percentageValueObject.toString();
percentageValueDouble=Double.parseDouble(percentageValueString);
}
else
percentageValueDouble=(Double) null;
这是给出的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at Gradebook$13.mousePressed(Gradebook.java:1567)
答案 0 :(得分:1)
所以得到的价值肯定不是双倍。
<强>原因强>
你绝对不会在单元格中加倍。
你可能有50%,10.5%或类似的东西。
你需要的是50,10.5。只需排除&#39;%&#39;。
P.S。当然原因是
您应该使用 equals()方法检查空字符串。
!gradesTable.getModel().getValueAt(i, j).equals("")
或者您也可以查看以下长度:
gradesTable.getModel().getValueAt(i, j).length()>0
修改强>
您正在使用 == 检查空字符串,因此即使字符串为空, if 块也在运行。所以问题将通过 equals()方法解决。