2017-06-12 70 views
0

我在嘗試獲取jtable列的雙重總和時遇到了問題。我的表只從mySQL表中獲取3列。其中一列是DATE類型,另外兩列是DOUBLE類型。 所以,當我嘗試:由sql查詢提供的jtable列的總和

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 「

所以問題是,爲什麼我的代碼試圖讓所有的錶轉換爲字符串,而不僅僅是列,還有,這有什麼解決方案?

+0

[Java中ClassCastException的解釋](https://stackoverflow.com/questions/907360/explanation-of-classcastexception-in-java) –

回答

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; 
} 
0

問題是在這裏:

Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: java.sql.Date cannot be cast to java.lang.String

爲什麼你想用日期來計算?你有什麼打算?你想如何操作Date部件? - 日,月...

0

原來,只是我的語法錯了,我不想計算日期。我的意思是第1列,對不起人,謝謝