Casting de objetos pra tipo primitivo double

5 respostas
luiz_ross
Estou com um problema, como eu faço o casting de objetos pra tipos primitivos? Explicando melhor, eu tenho um textfield que ao ir dando enter ele irá enchendo um ArrayList que irá receber só valores inteiros ou doubles, o problema é que eu preciso efetuar a soma desses valores incluidos mas o ArrayList só aceita objetos e os valores inseridos serão dinamicos, uma hora sera inserido por exemplo, 5 valores, em outro momento 10 e por ai vai.Eu não tenho idéia de como recuperar esses valores(recuperar eu sei), transforma-los em tipos primitivos pra efetuar a soma.Segue o trecho do código que fiz
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) 
        try{
        if (evt.getKeyCode() == evt.VK_ENTER) {
            list.add(new Double(jTextField1.getText()));
            jTextField1.setText("");  
            list.trimToSize();
            } 
        }catch(java.lang.NumberFormatException nfe)
        {
            JOptionPane.showMessageDialog(null,"Digite os valores utilizando ponto como delimitador de casas decimais!!!","ADVERTÊNCIA",JOptionPane.ERROR_MESSAGE);
        }
    }

e esse é o código que eu fiz pra recuperar o conteudo do ArrayList

for (int i = 0; i < list.size(); i++){
            System.out.println("Valores da lista - "+list.get(i));
        }
Agradeço qualquer ajuda.

5 Respostas

L
Faca assim,

Double id = new Double(20);

Double id2 = new Double(20);

//para soma-los

double i = id.doubleValue() + id2.doubleValue();

ok!!

luiz_ross

Somar não seria meu problema, meu problema é recuperar cada objeto do ArrayList, transforma-los em tipo primitivo, dado que o conteudo do array será dinamico, ele terá uma quantidade de valores variavel.

maxguzenski

talves eu tenha escrito alguns metodos errados… mas a ideia é essa!

double b;
iterator it = meuAerray.iterator();

while ( it.hasElement() ) {
    b += ((Double)it.next()).doubleValue();
}
maxguzenski

simplificando…

for (int i = 0; i < list.size(); i++) { 
    System.out.println("Valores da lista - "+((Double)list.get(i)).doubleValue()   ); 
}
E
((Double)list.get(i)).doubleValue()

O q vc precisa fazer é um casting para Double e a partir da classe Double obter o tipo primitivo double (metodo getDouble()), como disse nosso amigo maxguzenski.

É bem facil deduzir qual cast vc deve fazer.
Quando vc adicionou elementos no Array, vc adicionou Double.

Ver:

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
        try{
        if (evt.getKeyCode() == evt.VK_ENTER) {
            list.add(new Double(jTextField1.getText())); // <-- AQUI - vc deu new Double(elementoString);
            jTextField1.setText(""); 
            list.trimToSize();
            }
        }catch(java.lang.NumberFormatException nfe)
        {
            JOptionPane.showMessageDialog(null,"Digite os valores utilizando ponto como delimitador de casas decimais!!!","ADVERTÊNCIA",JOptionPane.ERROR_MESSAGE);
        }
    }

e esse é o código que eu fiz pra recuperar o conteudo do ArrayList

for (int i = 0; i < list.size(); i++){
            System.out.println("Valores da lista - "+list.get(i));
        }

Na hora de retira-los, vc tem q utilizar Double tambem.
E isso serve para qualquer classe adicionada a um Array ou Collection.

Criado 4 de junho de 2003
Ultima resposta 5 de jun. de 2003
Respostas 5
Participantes 4