Informática, perguntado por renatolucas40, 1 ano atrás

Porque o if cai em Opção Invalida! se eu digito a operação?? (Java Orientado a Objeto)

import java.util.Scanner;
import javax.swing.JOptionPane;
public class Calculadora{
public static void main(String[]args){
Scanner ler=new Scanner(System.in);

double num1;
double num2;
double resul;
double primeiro;
String operacao;

System.out.print("Digite o primeiro numero: ");
num1=ler.nextDouble();

System.out.print("Digite o segundo numero: ");
num2=ler.nextDouble();

operacao=ler.nextLine();
System.out.print("Digite A-Adicao / S-Subtracao / M-Multiplicacao / D-Divisao: ");
operacao=ler.nextLine();

if(operacao=="A" || operacao=="a"){
resul=num1+num2;
JOptionPane.showMessageDialog(null, num1 + "+" + num2 + "=" + resul);
}
else if(operacao=="S" || operacao=="s"){
System.out.print("Qual vira primeiro? 1º digitado ou 2º digitado? ");
primeiro=ler.nextDouble();

if(primeiro==1){
resul=num1-num2;
JOptionPane.showMessageDialog(null, num1 + "-" + num2 + "=" + resul);
}
else if(primeiro==2){
resul=num2-num1;
JOptionPane.showMessageDialog(null, num2 + "-" + num1 + "=" + resul);
}else{
JOptionPane.showMessageDialog(null, "!Opcao Invalida!");
}
}
else if(operacao=="M" || operacao=="m"){
resul=num1*num2;
JOptionPane.showMessageDialog(null, num1 + "x" + num2 + "=" + resul);
}
else if(operacao=="D" || operacao=="d"){
System.out.print("Qual vira primeiro? 1º digitado ou 2º digitado? ");
primeiro=ler.nextDouble();

if(primeiro==1){
resul=num1/num2;
JOptionPane.showMessageDialog(null, num1 + "/" + num2 + "=" + resul);
}
else if(primeiro==2){
resul=num2/num1;
JOptionPane.showMessageDialog(null, num2 + "/" + num1 + "=" + resul);
}else{
JOptionPane.showMessageDialog(null, "!Opcao Invalida!");
}
}else{
JOptionPane.showMessageDialog(null, "!Opcao Invalida!");
}
}
}

Soluções para a tarefa

Respondido por felipesouzabotafogo
1

Para comparar Strings você deve utilizar o método equals da classe, e não simplesmente usar o sinal de igualdade, pois saiba que as variáveis não guardam objetos, mas seus endereços.

O sinal de igual, porém, pode ser utilizado na comparação de caracteres, que em Java, são escritos com aspas simples, diferente das Strings, que utilizam aspas duplas.

Perguntas interessantes