Calculadora

7 respostas
P

Olá pessoal é o seguinte:
Estou fazendo uma calculadora mas estou com um problema de lógica.
Ela não funciona direito, pois quando eu clico no botão + por exemplo, ele pega o primeiro valor e soma o mesmo:

O código por exemplo do botão soma é este:

valor1 = Double.parseDouble(tfVisor.getText());

valor2 = Double.parseDouble(tfVisor.getText());

resu = valor1+valor2;

Para o botão Calcular:
tfVisor.setText(String.valueOf(resu));

E não dá certo.
se alguém puder me ajudar, agradecido.

7 Respostas

B

Ola,

crie uma variavel que seria um temp e uma para a operação, assim ele inicia sempre em 0, quando apertar + ou - ou * ou / vc acumula o primeiro valor nesta temp e a operação, for apertado qq outra operação vc pega o segundo valor e aplica a operação armazenada neste temp, assim vc terá a resposta…

+/- assim:

fluxo do programa:

temp = 0;

operação = “”;



o usuario digita = 8;

o usuario aperta o +;

temp = 8;

operação = +;
o usuario digita = 2;

o usuario aperta o =;

valor2 = 2;

temp = 8;

operação = +;

resultado = temp + valor2;

operação = “”;


se não fui tão claro fala ae… tentarei me explicar melhor…

P

Teria como vc me explicar melhor?
Se possível colocar algum código que tenha isso para mim copiar aqui?
Obrigado

B

“pauletsss”:
Teria como vc me explicar melhor?
Se possível colocar algum código que tenha isso para mim copiar aqui?
Obrigado

Explicar melhor é possível… mas codigo não…

Vamos lá, como funciona uma calculadora mais normal…
ela começa com um temp vazio e a operação tb, quando o usuário digita o primerio numero e aperta uma operação ela guarda o valor e a operação, e fica esperando pelo segundo numero, e mais uma operação, quando este é digitado, e a segunda operação tb ela pega o primeiro valor digitado, que estava no temp, o segundo valor e aplica a primeria operação nos dois, o resultado ela apresenta ao usuário e guarda este no temp, assim como a operação… e assim vai…

tentarei novamente por codigo, cada “…” é um ciclo…

temp = 0;

operação = ;



usuario digita 8

usuaior aperta o +

calculadora guarda, temp = 8

calculadora guarda, operação = +



usuario digita 7

usuario aperta o =

calculadora cria um valor2 e pega o segundo valor, valor2 = 7

temp = temp + valor2; o + aqui é a primeria operação, temp ficou igual a 15

calculadora guarda, operação = =;

calculadora apresenta o resultado = 15



usuario digita 7

usuario aperta o -

calculadora cria um valor2 e pega o segundo valor, valor2 = 7

temp = temp = valor2; o = aqui é a operação guardada, temp ficou igual a 7, pq temp = temp = valor2  7;

calculadora guarda, operação = -;

calculadora apresenta o resultado = 7



usuario digita 2

usuario aperta o =

calculadora cria um valor2 e pega o segundo valor, valor2 = 2

temp = temp - valor2; o - aqui é a operação guardada, temp ficou igual a 5

calculadora guarda, operação = =;

calculadora apresenta o resultado = 5


e assim vai…

P
Continuo não entendendo a tua lógica mas e me viro

quando vc falou por  exemplo:

usuario digita =8

eu tenho que criar uma variável para cada número?

o meu programa no botão + eu deixei assim por enquanto:

temp = 0;

operacao =Double.parseDouble("");

está certo ou não?

B
<blockquote><div class="quote-author">“pauletsss”:</div>Continuo não entendendo a tua lógica… mas e me viro…

quando vc falou por  exemplo:

usuario digita =“8”

eu tenho que criar uma variável para cada número?

o meu programa no botão “+” eu deixei assim por enquanto:

temp = 0;

operacao =Double.parseDouble("");

está certo ou não?

Bom, a variavel temp é uma só;
na operação se vc tentar converter pra Double vai rolar uma NumberFormatException…
o temp seria um double e a operação seria uma String…

J

No meu site tem uma calculadora, se quiser pegar ela pra ter uma ideia…

http://jairelton.com

FieroddPJ

acho q a ideia do bruno era + ou - isso …

pense o seguinte, quando qualquer botao é pressionado vc sabe o valor dele

exemplo:
se apertar o botao “1”, vai dar um setText(“1”) certo?
guarde esse primeiro numero numa variavel var1 por exemplo, apos isso vc digita uma operação (+, -, * ou /), guarde essa operação numa outra variavel string ou char, por ultimo vai ser digitado o segundo numero, entao vc vai e da um setText() novamente e guarde esse segundo numero numa outra variavel var2

agora veja vc tem os 2 numeros digitado e sabe q operaçãp fazer entao é so realizar o calculo, se a operação for ‘+’ vc soma, se for ‘-’ subtrai e assim por diante … entendeu a logica?

PS: lembre q dividir por zero nao pode :wink:

Criado 27 de julho de 2006
Ultima resposta 27 de jul. de 2006
Respostas 7
Participantes 4