Arraylist na session

4 respostas
A

Oi pessoal!!!
Tenho o seguinte ArrayList:

List carrinhoh = new ArrayList(); 

            if (session.getAttribute("registrosh") != null) { 

            carrinhoh = (ArrayList)session.getAttribute("registrosh"); 

            } 

           //Imprime o array antes de setar na sessao 
            System.out.println(carrinhoh+""); 
             
             carrinhoh.add(f.getIdprod()+""); 
             
              int ih=1; 
              int tamh = carrinhoh.size(); 

              for (ih=0; ih<tamh; ++ih) 
              { 
               //Imprime cada item adicionado no array 
               System.out.println(carrinhoh.get(ih)+""); 
              } 
             //Seta o array na sessao 
             session.setAttribute("registrosh", carrinhoh);

Ele imprime para mim,por exemplo esta coluna:

9
8
7

Como faço para ele imprimir também a soma dos elementos:
Assim:

9
8
7
24

Um abraço.
Eduardo

4 Respostas

M

Opa,

coloque uma variável soma e seja feliz:

int soma = 0; for (ih=0; ih<tamh; ++ih) { //Imprime cada item adicionado no array System.out.println(carrinhoh.get(ih)+""); soma += (int) carrinhoh.get(ih); } System.out.println(soma + "");

:joia:

A

Oi Marcos!!!
Obrigado por responder meu tópico.
Na verdade não deu muito certo...
Adaptei o código para as minhas necessidades e ficou assim:

List carrinhoef = new ArrayList(); 
           

           if (session.getAttribute("registrosef") != null) { 

           carrinhoef = (ArrayList)session.getAttribute("registrosef"); 
           
           } 

          //Imprime o array antes de setar na sessao 
           System.out.println(carrinhoef+""); 
           
           int qtd = Integer.parseInt(f.getQtd());
           double preco= Double.parseDouble(f.getPreco());
           double total = qtd*preco;
           
           carrinhoef.add(total+""); 
            
           
            
             int ief=1; 
             int tamef = carrinhoef.size(); 
             String soma = null;
             for (ief=0; ief<tamef; ++ief) 
             { 
            
    
              //Imprime cada item adicionado no array 
              System.out.println(carrinhoef.get(ief)+""); 
              soma += Double.parseDouble((String) carrinhoef.get(ief)); 
              
             } 
             System.out.println(soma); 
            //Seta o array na sessao 
            session.setAttribute("registrosef", carrinhoef); 
            session.setAttribute("soma",soma);

Agora ele recupera o array na session assim:

30
45
50

E o que ele deveria somar ele recupera assim:

30  45  50

Você sabe o que pode estar acontecendo?

M

Substitua então println por print.

:joia:

C

cara,
sua variável soma deve ser de algum tipo compatível com o BigDecimal (ou ele mesmo, ou o double por exemplo)

do jeito que vc declarou a variável ele está implicitamente convertendo o valor da lista para uma string e concatenando com o valor que vc já tem dentro da sua variável

abçs

Criado 6 de junho de 2006
Ultima resposta 6 de jun. de 2006
Respostas 4
Participantes 3