我在尝试获取jtable列的双倍数时遇到问题。我的表只从mySQL表中获取3列。其中一列是DATE类型,另外两列是DOUBLE类型。 所以,当我尝试:
double xreoseistot = 0;
double xreosi;
for(int i = 0; i < jTable1.getRowCount(); i++){
xreosi = Double.parseDouble((String)jTable1.getValueAt(i, 2));
xreoseistot += xreosi;}
我收到错误说:“线程中的异常”AWT-EventQueue-0“java.lang.ClassCastException:java.sql.Date无法强制转换为java.lang.String”
所以问题是,为什么我的代码试图将所有表转换为String而不仅仅是列,还有什么解决方案呢?
答案 0 :(得分:0)
从您的错误消息中可以看出,返回的第三列是java.sql.Date
,而不是字符串。因此,尝试将其转换为字符串并不是很有意义,也不应期望将字符串作为数字加总是有意义的。
相反,您可以尝试汇总表示结果集中每个日期的毫秒数:
for (int i=0; i < jTable1.getRowCount(); i++) {
xreosi = Double.parseDouble((double)jTable1.getValueAt(i, 2).getTime());
xreoseistot += xreosi;
}
如果您打算将其他两列(可能是双精度数)相加,那么您应该更改for
循环中的列索引,例如
for (int i=0; i < jTable1.getRowCount(); i++) {
xreosi = Double.parseDouble(jTable1.getValueAt(i, 1)); // assuming 2nd column is double
xreoseistot += xreosi;
}
答案 1 :(得分:0)
问题出在这里:
Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: java.sql.Date cannot be cast to java.lang.String
你为什么要用Date计算?你的意图是什么?您希望如何使用日期部分进行操作? - 一天,一个月......
答案 2 :(得分:0)
原来,我的语法错了,我不想计算日期。我的意思是第1列,抱歉,感谢