Duvida com operador ternario

2 respostas
AndreAyryloon

Ola galera, sou novo por aqui, comecei a estudar java essa semana. Entao me desculpem se a minha duvida é ingenua!

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

public class JogoDeDados {
	
	public static void main(String[] args) {
		
		String palpite = JOptionPane.showInputDialog("Qual o seu palpite?");
		String[] faces = {"1", "2", "3", "4", "5", "6"};
		
		Random r = new Random();
		
		int indiceFace = r.nextInt(faces.length);
		String face = faces[indiceFace];
		
		String valorSorteado = face;
		
		String msg = (palpite != valorSorteado) ? "Palpite Errado!" : "Seu Palpite Esta Correto!";
		msg = "Seu Palpite foi = " + palpite + "\n" + "O Valor Sorteado foi = " + valorSorteado + "\n" + msg;
		
		JOptionPane.showMessageDialog(null, msg);
		System.out.println(msg);
	}
}

Bem, nesse codigo o usuario dar um palpite de um numero e o programa retorna se ele acertou o palpite ou nao, porem, mesmo quando o usuario erra ele continua com a mensagem "Seu palpite Esta Errado"...

alguém poderia me ajudar?

2 Respostas

D

Bem, pretendo não me aprofundar muito, até porque você está iniciando, mas em java, existe dois tipos de variáveis, primitivas e de referência, o que isso quer dizer?

Bem, quer dizer que para variáveis do tipo int, double, float, char, long, boolean, byte, você consegue usar == para comparar valores, porém String não é primitiva, logo usar == compara posições de memória e não valores, para esse caso use o método equals():

...
String msg = (!palpite.equals(valorSorteado)) ? "Palpite Errado!" : "Seu Palpite Esta Correto!";
...

Recomendo ler a apostila gratuita para baixar desse curso da Caelum, lá explica tudo de um jeito bem simples, espero ter ajudado.

AndreAyryloon

Blz DiguinDeveloper!

Agradeço muito por esclarecer minha duvida e obrigado pela dica da apostila!

me ajudou muito!

Criado 4 de janeiro de 2015
Ultima resposta 4 de jan. de 2015
Respostas 2
Participantes 2