Problema para acumular soma nos txtfild

Galera e o seguinte queria saber o que estou fazendo de errado pq quando vou jogar outro valor em cima do valor total ele não esta somando.

Ex:

Tenho vendas : adiciono um produto o valortotal e 100 reais desse produto, quando vou adicionar outro produto jogar outro valor ele passa por cima e não soma.

private void jButtonIncluirActionPerformed(java.awt.event.ActionEvent evt) {       
        String a = jFValor.getText();//Valor do produto
        Double a1 = Double.parseDouble(a);
        String b = jTQuantidade.getText();//Quantidade do produto
        Double b1 = Double.parseDouble(b);
        Double d = a1 * b1;//Multiplica valor e quantidade para me dar o valortotal.
         
          jTValorTotal.setText(d +"");//mostra o valor no txt após a venda de um produto

// Acho que esta parte esta errada  devido o valor não acumular com o próximo que ira vir.
 
            Double k = 0; //variável que acumularia o valor do txt.    
            k = k + d ;
            jTValorTotal.setText(k + "");//mostrar um novo valor 

Se alguém puder me ajudar com esse problema de lógica.

toda hora vc está atribuindo 0 a variável k…

ou seja, sempre quando faz k = k+d;
antes vc zera o kDouble k = 0;

Eu acho q estar certo inicializando com zero,pq ele vai receber o valor e somar o próximo,mesmo eu inicializando ele não soma com o próximo valor de produto que coloco.

Toda vez q o metodo for chamado o valor volta pra zero

matheus145 o negócio é o seguinte…

imagina que vc tem na classe principal algo que chame o comportamento:

[code]Main…

int i = 3;
somaValor(i);[/code]

e esse soma valor é:

public void somaValor(int i) { int k = 0; k = k + i; }

percebe que quando eu chamo o comportamento somaValor ele tá zerando meu k sempre???

ou seja, por mais que eu some, mas toda hora que ele passar na linha int k = 0; ele vai zerar o k…

Sacou???

Cara isso ai já saquei, mesmo eu colocando um valor ele não esta acumulando quando acrescento outro produto,o meu problema e este.

Se alguém puder me ajudar.

Obrigado

[quote=diogogama]matheus145 o negócio é o seguinte…

imagina que vc tem na classe principal algo que chame o comportamento:

[code]Main…

int i = 3;
somaValor(i);[/code]

e esse soma valor é:

public void somaValor(int i) { int k = 0; k = k + i; }

percebe que quando eu chamo o comportamento somaValor ele tá zerando meu k sempre???

ou seja, por mais que eu some, mas toda hora que ele passar na linha int k = 0; ele vai zerar o k…

Sacou???[/quote]

E como eu poderia reverter isto ,para que quando entrar com novo valor de produto ele somar com o anterior que já tem no valor total?.

Primeiro, da uma lida nisso.
Acho que vai resolver teu problema.


//Exemplo de metodo recebendo um parametro
public metodo(Parametro parametro){// O metodo recebe um valor qualquer
         
         //A variavel i só existe dentro do metodo
         //e nesse caso n importa qual o valor antigo de i
         // Já que i é "zerada" a cada execução desse metodo
         int i = 0;
         
         // i = 0 + parametro; 
         i = i + parametro;
         
         // Nesse caso o valor de i sempre vai ser igual a parâmetro
         syso(i);


}//No final do método a variável i não existe mais, como o método "sabe" qual o valor antigo de i?

É isso ai Matheus, a cada clique no botão a variavel k é inicializada com valor 0 por isso que não esta acumulando.

[quote=matheus145]
E como eu poderia reverter isto ,para que quando entrar com novo valor de produto ele somar com o anterior que já tem no valor total?.[/quote]

Cara, vc precisa primeiro entender sobre escopo de variáveis, quando elas são instanciadas e quando são destruídas…

Existem várias formas de resolver isso que você quer, primeira e mais prática, na minha opinião, criar uma “variável global” (meu Deus… rs…) e passar ela como parâmetro, enquanto seu programa existir ela irá existir e irá somar tudo…

Mas precisamos saber qual sua regra de negócio certinha pra poder ajudar melhor…

Vlw…

Como você quer atribuir um double para uma String sem antes converter?

converta primeiro antes de atribuir para o textField ou então use um cast

abraço.