2017-06-12 5 views
0

Ich habe ein Problem hier beim Versuch, die doppelte Summe einer JTable-Spalte zu bekommen. Meine Tabelle erhält nur 3 Spalten aus einer mySQL-Tabelle. Eine der Spalten ist DATE-Typ und die anderen beiden sind DOUBLE-Typ. So wenn ich versuche:Summe der jtable Spalte von SQL-Abfrage zur Verfügung gestellt

double xreoseistot = 0; 
double xreosi; 
for(int i = 0; i < jTable1.getRowCount(); i++){ 


    xreosi = Double.parseDouble((String)jTable1.getValueAt(i, 2)); 
    xreoseistot += xreosi;} 

ich einen Fehler zu sagen: „Exception in thread "AWT-Eventqueue-0" java.lang.ClassCastException: java.sql.Date kann nicht auf java.lang.String gegossen werden "

Also ist die Frage, warum mein Code versucht, die gesamte Tabelle in String konvertiert und nicht nur die Spalte und auch, was ist die Lösung dafür?

+0

Mögliche Duplikat von [Erklärung der "ClassCastException" in Java] (https://stackoverflow.com/questions/907360/explanation-of-classcastexception-in-java) –

Antwort

0

Aus Ihrer Fehlermeldung scheint, dass die dritte Spalte, die zurückgegeben wird, eine java.sql.Date, keine Zeichenfolge ist. Daher macht es keinen Sinn zu versuchen, dies auf eine Zeichenkette zu übertragen, noch sollten Sie erwarten, dass das Summieren einer Zeichenkette als Zahl sinnvoll wäre.

Stattdessen können Sie versuchen, die Millisekunden Summieren jedes der Daten in der Ergebnismenge darstellt:

for (int i=0; i < jTable1.getRowCount(); i++) { 
    xreosi = Double.parseDouble((double)jTable1.getValueAt(i, 2).getTime()); 
    xreoseistot += xreosi; 
} 

Wenn Sie die anderen zwei Spalten zu summieren beabsichtigen, die vermutlich verdoppelt sind, dann sollten Sie die Spalte ändern Index in Ihrer for Schleife, z hier

for (int i=0; i < jTable1.getRowCount(); i++) { 
    xreosi = Double.parseDouble(jTable1.getValueAt(i, 1)); // assuming 2nd column is double 
    xreoseistot += xreosi; 
} 
0

Problem ist:

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

Warum versuchen Sie, mit Datum zu berechnen? Was ist Deine Absicht? Wie möchten Sie mit Date-Teilen manipulieren? - Tag, Monat ...

0

Es stellte sich heraus, nur meine Syntax war falsch, ich wollte die Daten nicht berechnen. Ich meinte Spalte 1, sorry Jungs und danke

Verwandte Themen