Problema ao somar valores de uma coluna de um JTable

7 respostas
FabricioPJ

Olá a todos. Antes de postar aqui, dei uma pesquisada e achei alguns códigos para comparar com o meu, mas nenhum deu jeito.

O que quero é somar os valores de uma coluna de um JTable. O que fiz foi:

double total = 0; for(int i = 0; i < tabPrincipal.getRowCount(); i++){ Double soma = (Double)tabPrincipal.getValueAt(i, 0); total = total + soma.doubleValue(); } lblTotal1.setText("" + total);

Quando mando executar o código, em um JButton, o seguinte erro acontece:

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

O que pode ser isso???

Grato pela atenção.

7 Respostas

71C4700

Tenta fazer assim nesta linha

Double soma = (Double)tabPrincipal.getValueAt(i, 0); // Muda pra isso // Acho que esta vindo uma String e ela nao consegue converte para Double, acho que assim Double.parseDouble(tabPrincipal.getValueAt(i, 0);) funcione

Veja se funciona…

Att.

FabricioPJ

Obrigado pela atenção colega, mas não obtive sucesso ainda.

dionat4n

Para converter uma String num tipo primitivo double ou num objeto Double, você deve utililizar:

double doubleNumber = Double.parseDouble(tabPrincipal.getValueAt(i, 0));Veja mais em :
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Double.html#parseDouble(java.lang.String)

FabricioPJ

Coloquei essa linha de código no lugar da anterior:

double soma = Double.parseDouble(tabPrincipal.getValueAt(i, 0));

Só que o compilador me acusa o seguinte erro:

parseDouble(java.lang.String) in java.lang.Double cannot be applied to java.lang.Object

O que entendi é que a conversão de Object (o conteúdo da minha célula) não pode ser convertido em um double.

Agradeço a ajuda dos colegas e fico no aguardo de mais sujestões.

MnF
for(int i = 0; i < tabPrincipal.getRowCount(); i++){  
    Double soma = (Double)tabPrincipal.getValueAt(i, 0);  
    total = total + soma.doubleValue();  
}

essa parte pra mim tá certo... só verifique o seguinte..
se tu não tá colocando virgulas ou pontos... que pode tar dando erro na hora de fazer o cast para double...

experimente somente com valores inteiros.

se não funcionar faça...

String aux = (String)tabPrincipal.getValueAt(i,0);
double soma = Double.parseDouble(aux);

espero ter ajudado!

[]'s

dionat4n

Isso… Faltou o cast de Object para String…

FabricioPJ

Resolvi essa parte do problema da seguinte forma:

double total = 0;
String valor = "";
int linhas = tabPrincipal.getRowCount();

for(int i = 0; i < linhas; i++){
    valor = String.valueOf(tabPrincipal.getValueAt(i, 0));
    total = total + Double.parseDouble(valor);
    System.out.println("Linha: " + i + " Valor: " + valor);
}
lblTotal1.setText("Total: " + total);

Agradeço a atenção de todos em me ajudar.

Criado 24 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 7
Participantes 4