Duvida no nextLine()

5 respostas
J
Olá a todos. Bem, no seguinte trecho
System.out.println("Deseja jogar novamente: (S/N)?");
		resposta = entrada.nextLine();
		if(resposta == "s" || resposta == "S")
			continuarJogando();
Na hora de eu entrar com (S/N) não funciona. O que será que está dando errado? Olhem o exercicio:
//programa que adivinha um número entre  1 e 1000

import java.util.*;
public class AdivinhaNumero {
	
	private int palpite;
	private int numSecreto;
	private int diferença;
	private String resposta;
	
	Random random = new Random();
	Scanner entrada = new Scanner(System.in);
	
	public void iniciarJogo(){
		
		numSecreto = random.nextInt(1000) + 1;
		
		System.out.print("Adivinhe um número entre 1 e 1000: ");
		palpite = entrada.nextInt();
		
		while (palpite != numSecreto){
			
			while(palpite < numSecreto){
								
				diferença = numSecreto - palpite;
				if(diferença < 10)
					System.out.println("Você quase adivinhou!");
				else if(diferença < 50)
					System.out.println("Você está próximo de adivinhar.");
				else if(diferença < 300)
					System.out.println("Você está um pouco longe de acertar.");
				else if(diferença < 600)
					System.out.println("Você está Muuuiiito looonge de adivinhar.");
				else 
					System.out.println("Puxa! Como você está longe de adivinhar. Bota longe nisso!");
					
				System.out.print("Entre com um novo palpite: ");
			    palpite = entrada.nextInt();					
			}
			while (palpite > numSecreto){
				
				diferença = palpite - numSecreto;
				if(diferença < 10)
					System.out.println("Você quase adivinhou!");
				else if(diferença < 50)
					System.out.println("Você está próximo de adivinhar.");
				else if(diferença < 300)
					System.out.println("Você está um pouco longe de acertar.");
				else if(diferença < 600)
					System.out.println("Você está Muuuiiito looonge de adivinhar.");
				else 
					System.out.println("Puxa! Como você está longe de adivinhar. Bota longe nisso!");
					
				System.out.print("Entre com um novo palpite: ");
			    palpite = entrada.nextInt();	
			}
			
		}
		System.out.println("Parabéns!!! Você adivinhou o número.");
		System.out.println("Deseja jogar novamente: (S/N)?");
		resposta = entrada.nextLine();
		if(resposta == "s" || resposta == "S")
			continuarJogando();
	}
	
	public void continuarJogando(){
		iniciarJogo();
	}
	
}

5 Respostas

Y

Altere isso:

if(resposta == "s" || resposta == "S")

Para isso:

if (resposta.equalsIgnoreCase("S"))

Use o método equals para comparar String’s.

J

Ainda não solucionou, alguma outra dica?

Y

Tente:

resposta = entrada.nextLine().trim().toUpperCase();

if (resposta.equals("S"))
  { continuarJogando(); }

Tem que funcionar. Se não funcionar, então alguma outra coisa está errada que não nesta parte do código.

Ah, qual erro está ocorrendo?

L

amigo nextline pula para a proxima linha.
tente usar somente o next.

J

Ola pessoal!
Bem verifiquei as duas últimas dicas e a que deu certo foi colocar apenas o “next” sem o “Line” e tambem utilizei o “equalsIgonoreCase” que o Yky Mattshawn indicou.

Obrigado a todos pelas dicas. Até mais.

Criado 18 de maio de 2007
Ultima resposta 20 de mai. de 2007
Respostas 5
Participantes 3