Calculadora defeituosa!

4 respostas
E

Fiz esta calculadora para testar a classe JOptionPane até ai blz mas o que não estou entendendo é que quando passo uma String para o metodo “calc()” ele funciona porem se eu uso o metodo que recebe o operador via “JOptionPane” pelo “dialog3()” ele não funciona! O resultado é sempre 0 neste codigo! :???:

import javax.swing.JOptionPane;

public class CalcMath {

	int e1,e2,res;
	String num1,num2,oper;
		
	
 public int calc(int a, int b, String x)
{
	if(x == "+")
		 res = (a + b);
	if(x == "-")
		 res = (a - b);
	if(x == "*")
		 res = (a * b);
	if(x == "/")
		 res = (a / b);	 
	return(res);
 }

public int dialog1()
{
	num1 = JOptionPane.showInputDialog(null,"Digite o primeiro numero!!!");
	e1 = Integer.parseInt(num1);
	return (e1);
}

public int dialog2()
{
	num2 = JOptionPane.showInputDialog(null,"Digite o segundo numero!!!");
	e2 = Integer.parseInt(num2);
	return (e2);
}

public String dialog3()
{
	oper = JOptionPane.showInputDialog(null,"Digite um dos operadores +  -  *  /  !!!");
	return (oper);
}

 public static void main(String args[])
 {	 
	 CalcMath ab = new CalcMath();	 
	 JOptionPane.showMessageDialog(null, ab.calc(ab.dialog1(),ab.dialog2(),ab.dialog3()));
 }
}

4 Respostas

E

exdj21, == compara o valor de uma variável.
Em java existem dois tipos de variáveis: as de tipos primitivo e as variáveis de referência a um objeto.

O valor de um tipo primitivo é um número ou um caractere;
O valor contido em uma variável de referência é um endereço de memória;

para fazer uma comparação com OBJETOS do tipo String utilize o método .equals()

o correto no método calc() é:

public int calc(int a, int b, String x)
{
   if("+".equals(x))
       res = (a + b);
   if("-".equals(x))
       res = (a - b);
   if("*".equals(x))
       res = (a * b);
   if("/".equals(x))
       res = (a / b);   
   return(res);
 }

Antes que você reclame de seguir o padrão… sempre utilize o método .equals() no literal String ou pode receber um NullPointerException.

E

Valew, estarei utilizando o método .equals(). É assim, praticando e aprendendo! :eek:

T

eu usaria o método equals em sua variavel x

no caso:

x.equals("+");

sou novo aqui, espero contribuir bastante =)

E

Procure não utilizar na variável, pois, a variável String também aceita o valor null.
Se você tentar invocar um método de uma variável de referência vai receber um NullPointerException: faça o teste:

public class Teste1 { public static void main(String args[]) { String valor = null; valor.equals("+"); } }

Veja agora a opção segura:

public class Teste2 { public static void main(String args[]) { String valor = null; "+".equals(valor); } }

A segunda opção não falha.

Criado 7 de fevereiro de 2008
Ultima resposta 10 de fev. de 2008
Respostas 4
Participantes 3