Roda mas não funciona

10 respostas
L

Quem podem me ajudar com este codigo simples, não consigo executar comparação entre duas String.

import javax.swing.JOptionPane;

public class Calculadora{

public static void main ( String args[] ){
	
	// Entrada de Dados
	String firstNumber, secondNumber, sinal;
			
	
	// Calculo de dados na aplicação
	int number1, number2;
	
	// Recebe o resultado
	int result;
	
	
	
	// Recebe valor digitado pelo usuario
	firstNumber  = 
	JOptionPane.showInputDialog("Informe o 1º Numero");
	
	secondNumber = 
	JOptionPane.showInputDialog("Informe o 2º Numero");
	
	sinal = 
	JOptionPane.showInputDialog("Informe a operação");
	
			 
	// Converte os numeros para Inteiro
	number1 = Integer.parseInt ( firstNumber  );
	number2 = Integer.parseInt ( secondNumber );
	
	
	result = 0;	
	
	if (sinal == "+")
    {
       
       result = number1+= number2;
    } 
    
    else
    
       if (sinal == "-")
       {
       
          result = number1-= number2;
       } 
    
       else
    
          if (sinal == "/")
          {
       
             result = number1/= number2;
          } 
    
          else
    
             if (sinal == "*")
             {
       
                result = number1*= number2;
             } 
    
    
  JOptionPane.showMessageDialog(
  	null, "Calculo é\n" + result, "Resultado",
  	JOptionPane.PLAIN_MESSAGE);
  	
  System.exit(0);

}// Fim metodo main

} // Fim class Calculadora

10 Respostas

javapaulomg

Como String não e um tipo primitivo a mesma deve ser comparada com o metodo “equals()”, pois com “==” está apenas verificando se ambas possuem a mesma referência.

smkk

cara… tente comparar utilizando o método .equals(String) assim:

sinal.equals("+");

caso assim funcione o problema era que a instância sinal não é a mesma da “+” que você informou no if, caso contrário verifique se o sinal está realmente vindo como “+” (pode ser que tenha algum espaço na frente ou atrás.

webwillian

E porque esse “=” depois do return?

smkk

me desculpe mais eu não vi nenhum return no código dele.

M

fica como o paulo e o smkk disseram

basta substituir la no codigo

if (sinal == "+")
por
if (sinal.equals("+"))
L

Ok, agradeço dica agora funcionou!

webwillian

Peço desculpas.

smkk

normal… realmente o result ali pode ser confundido com um return… ficaria bem melhor se o código estivesse no modo de código do forum!!..

Andre_Brito

Pessoal, quando se compara um char só, não deveria ser usado o charAt()?

smkk

Apesar de ser apenas um char, a comparação está sendo feita entre duas Strings, e fica mais elegante compará-las utilizando o método Equals, que significa “igual” e serve exatamente para isso, do que utilizar um método chamado charAt, que serve para recuperar um char em uma determinada posição.

Criado 17 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 10
Participantes 6