vinhali
Outubro 16, 2018, 3:32am
#1
Boa noite,
Estou tentando somar uma coluna de uma jTable, porém sem sucesso, a coluna é do tipo Float, segue o código abaixo:
Float soma = null;
for (int i = 0; i < jTableProdutosAdd.getColumnCount(); i++) {
Float valor = (Float) jTableProdutosAdd.getValueAt(i, 2);
soma += valor;
}
ValorTotal.setText(String.valueOf(soma));
}
Qual o erro ? Preciso manter o tipo como float por enquanto.
Aslj485
Outubro 16, 2018, 3:59am
#2
getColumnCount() , esse metodo retorna o numero de colunas na linha , pelo que entendi nao seria melhor pegar a quantidade de linhas na tabela para o for?
Você sabe que Float
e float
são tipos de dados diferentes né?
Você tem Float soma = null
e depois tem soma += valor
.
Devido ao auto unboxing e auto boxing, o código da sua soma é equivalente a fazer isso:
soma = Float.valueOf(soma.floatValue() + valor.floatValue());
O que acontece quando se chama o método floatValue()
em um objeto null
?
Aliás, o que acontece ao se tentar acessar qualquer membro de um objeto null
?
vinhali
Outubro 18, 2018, 1:58am
#4
Ele não retorna nada, qual seria melhor forma de realizar a soma da coluna?
vinhali
Outubro 18, 2018, 2:06am
#5
pra quem precisar no futuro,a solução para meu caso foi o seguinte:
double somaTotal=0;
for(int i=0; i<jTableProdutosAdd.getRowCount();i++)
somaTotal += Double.parseDouble(jTableProdutosAdd.getValueAt(i, 2).toString());
ValorTotal.setText(""+somaTotal);
vinhali:
Ele não retorna nada
Não, ao acessar um membro de um objeto null
, acontece NullPointerException
.
É só você trocar de Float
para float
e inicializar com zero que vai resolver.