Fica pulando linha do código

Estou fazendo um jogo da adivinhação mas quando digito um numero era para aparecer a perguntar “Quer tentar de novo: [sim/nao]” e digitar uma resposta mas o programa fica pulando essa parte. Eu compilo o programa no cmd.

import java.util.Scanner;

public class Jogo{
  public static void main(String[] args){
    Scanner teclado = new Scanner(System.in);

    double aleatorio = Math.random();
    int numero_aleatorio = (int) (1+aleatorio*(6-1));
    int numero;
    String res;

    System.out.println("Estou pensando em um numero entre 1 e 5 tente adivinhar");

    do{
      System.out.println("Digite um valor entre 1 e 5: ");
      numero = teclado.nextInt();
      if(numero>=1 && numero<=5){
        if(numero==numero_aleatorio){
          System.out.println("ACERTOU!!!");
        }
        else{
          System.out.println("ERROU!!! O numero era "+numero_aleatorio);
        }
      }
      else{
        System.out.println("Digite um valor entre 1 e 5");
      }
      System.out.println("Quer tentar de novo: [sim/não]");
      res = teclado.nextLine();
    }while(res.equalsIgnoreCase("sim"));

  }
}
1 curtida

Substitua por:

res = teclado.next();

Abraço.

1 curtida

Obrigado, deu certo.

Se puder marcar como solução, agradeço! :slight_smile:

A raiz do seu problema foi o uso do nextInt() na primeira entrada de dado. Caso queira saber a teoria do problema acesse essa questão do StackOverflow. Inclusive lá tem uma sugestão pra usar o nextLine().

1 curtida

ja marquei, tinha esquecido

Valeu! Precisando, estamos aí :wink:

Apenas complementando: não usem o método nex().
Prefira ler tudo com nextLine(), mesmo que seja para armazenar temporariamente em variáveis do tipo String.
Após isso (e das validações necessárias), caso necessário, converta os valores aos respectivos tipos, utilizando as classes wrapper.
Por quê? Simples, ao seguir esta abordagem você garante que lê tudo o que foi digitado, valida a entrada de dados e converte nos tipos específicos e necessários. Evita problemas de entrada incorreta e utiliza uma melhor prática.