Roda mas não funciona

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

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.

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.

E porque esse “=” depois do return?

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

fica como o paulo e o smkk disseram

basta substituir la no codigo

if (sinal == "+")[/code]por[code]if (sinal.equals("+"))

Ok, agradeço dica agora funcionou!

Peço desculpas.

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!!..

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

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.