Duvida (referencia)!

4 respostas
S
Double aberto = new Double(0);
Double pago = new Double(0);
somarContrato(antigos,aberto,pago);
linha.put("valorPago",pago);
linha.put("valorAberto",aberto);


public void somarContrato (Vector antigos, Double aberto, Double pago){
           Iterator i = antigos.iterator();
           while(i.hasNext()) {
           Hastable hash = (Hashtable) i.next();
            String estado = (String) hash.get("estado");
    	   if ("aberto".equals(estado) ) {
		aberto = new Double(aberto.doubleValue() + ((Double)hash.get("valor")).doubleValue(), 2);
	    } else if ("liquidado".equals(estado) ) {
		pago = new Double(pago.doubleValue() + ((Double)hash.get("valor")).doubleValue(), 2);
           } else if ("substituido".equals(estado)){
              novos.add(h);
           }

          if (!novo.isEmpty()) {
              somarContrato(metodoX(vector),aberto,pago);
          }
}


}

Porque mesmo depois que sai somando tudo ali , quando eu vou colocar no Hashtable linha (os put) ele vai com o valor 0(zero) mesmo inicializado pelo DOuble.

4 Respostas

S

O problema é o seguinte:

vc passa para o metodo :

Double aberto = new Double(0);
Double pago = new Double(0);

ae dentro do metodo quando vc faz isso, ele perde a referencia para esses objetos que vc passou no começo.

aberto = new Double(aberto.doubleValue() + ((Double)hash.get(“valor”)).doubleValue(), 2);

pago = new Double(pago.doubleValue() + ((Double)hash.get(“valor”)).doubleValue(), 2);

S

pois eh !
foi o que eu imaginei!

saca como resolver ?
vou ver aqui se eu conseguir posto antes !

S

Você pode retornar nesse metodo um Array, com os Doubles.

S

valeu sakurai,
mas como ele eh um metodo reciproco, e eu ja tenho o Hashtable ali no inicio que vai ser onde eu preciso colocar os valore seu passei o Hashtable no lugar dos 2 Double, ae ja vou somando e colocando dentro do Hashtable.
Viva as Collections :smiley:

Criado 24 de maio de 2006
Ultima resposta 24 de mai. de 2006
Respostas 4
Participantes 2