Problemas com Operadores em String

3 respostas
W

Pessoal esse é meu código, quando digita no JOption
para saber se “Qual animal tem crina?” o if simplesmente
considera qualquer valor errado pelo Operador == que está em

String a = JOptionPane.showInputDialog("Qual animal tem crina?");
	    if(a == "cavalo"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}

Me ajudem para que se digitar cavalo de “Voce acertou” e se digitar qualquer
outra coisa mostre “Voce Errou”.

import javax.swing.JOptionPane;
import java.util.Random;

public class J {
    public static void main(String[] args) {
	
    JOptionPane.showMessageDialog(null, "Bem vindo ao Jogo!");
	    String J1 = JOptionPane.showInputDialog("Digite jogador 1");
	    String J2 = JOptionPane.showInputDialog("Digite jogador 2");
        
		String jogador1 = J1;
		String jogador2 = J2;
		
		System.out.println("Jogador 1: " + jogador1);
		System.out.println("Jogador 2: " + jogador2);
	
	String f = JOptionPane.showInputDialog("Digite algo Para Comecar:");

	String[] n = {"Pergunta1", "Pergunta2", "Pergunta3", "Pergunta4"};
	
	Random r = new Random();
    
	int q = r.nextInt(n.length);
	String num = n[q];
	
	String g = num;
	JOptionPane.showMessageDialog(null, g);
	
	String a = JOptionPane.showInputDialog("Qual animal tem crina?");
	    if(a == "cavalo"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}
		
		String b = JOptionPane.showInputDialog("Qual animal rasteja?");
		 if(b == "cobra"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}
	}
}

3 Respostas

DaniloAndrade
Wallace Stoffel:
Pessoal esse é meu código, quando digita no JOption para saber se "Qual animal tem crina?" o if simplesmente considera qualquer valor errado pelo Operador == que está em
String a = JOptionPane.showInputDialog("Qual animal tem crina?");
	    if(a == "cavalo"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}
Me ajudem para que se digitar cavalo de "Voce acertou" e se digitar qualquer outra coisa mostre "Voce Errou".
import javax.swing.JOptionPane;
import java.util.Random;

public class J {
    public static void main(String[] args) {
	
    JOptionPane.showMessageDialog(null, "Bem vindo ao Jogo!");
	    String J1 = JOptionPane.showInputDialog("Digite jogador 1");
	    String J2 = JOptionPane.showInputDialog("Digite jogador 2");
        
		String jogador1 = J1;
		String jogador2 = J2;
		
		System.out.println("Jogador 1: " + jogador1);
		System.out.println("Jogador 2: " + jogador2);
	
	String f = JOptionPane.showInputDialog("Digite algo Para Comecar:");

	String[] n = {"Pergunta1", "Pergunta2", "Pergunta3", "Pergunta4"};
	
	Random r = new Random();
    
	int q = r.nextInt(n.length);
	String num = n[q];
	
	String g = num;
	JOptionPane.showMessageDialog(null, g);
	
	String a = JOptionPane.showInputDialog("Qual animal tem crina?");
	    if(a == "cavalo"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}
		
		String b = JOptionPane.showInputDialog("Qual animal rasteja?");
		 if(b == "cobra"){
		    JOptionPane.showMessageDialog(null, "Voce acertou");
		} else {
		    JOptionPane.showMessageDialog(null, "Voce errou");
		}
	}
}

no guj ja tem muita coisa sobre isso, mas vamos la mais uma vez

para comparar objetos use o metodo equals

ex:

String a = JOptionPane.showInputDialog("Qual animal tem crina?");
if("cavalo".equals(a)){
//faz alguma coisa

}else{
//faz outra coisa
}

pra saber mais leia:
http://www.caelum.com.br/apostila-java-orientacao-objetos/

S

DaniloAndrade:

no guj ja tem muita coisa sobre isso, mas vamos la mais uma vez

para comparar objetos use o metodo equals

ex:

String a = JOptionPane.showInputDialog("Qual animal tem crina?");
if("cavalo".equals(a)){
//faz alguma coisa

}else{
//faz outra coisa
}

pra saber mais leia:
http://www.caelum.com.br/apostila-java-orientacao-objetos/

Só para complementar:

Quando você usa if com 2 objetos ele apenas compara o endereço na memória e não conteúdo deles. Quando você usa o equals(object) ai sim ele compara os valores. Lembrando que se você criar a sua própria classe e quiser utilizar o equals terá que sobrescrever os metodos equals e hashcode.

W

Cara Muito Obrigado pela ajuda.
Até mais ^^

Criado 10 de abril de 2013
Ultima resposta 10 de abr. de 2013
Respostas 3
Participantes 3