Problema de leitura c

Boa madrugada!
Primeiramente, peço desculpas pelo modo que irei descrever o meu problema, pois, é a primeira vez que posto num “fórum” de programação… Enfim…

Estou desenvolvendo um código de adivinhação-simples, aonde o jogador terá que adivinhar um número aleatório, gerado pela função random. Porem, ao jogador “dar os comandos”, que são lidos pelo scanner, ele necessita pressionar 2 vezes a tecla Enter.
Alguém sabe dizer o que pode ser o erro?

Obs: já “ouvi falar” com problema de buffer, até tive um erro próximo, em outro código, e consegui resolver com “System.out.println();”.

Mostre o seu código que está com esse problema, pois assim é mais fácil vermos o que pode estar errado.

Abraço.

Agora, o código esta fazendo a leitura correta… Apenas “dei um tempo do código” e, ao ligar o pc, no outro dia, está funcionando. Não faço ideia o pq, mas esta funcionando corretamente, para mim…

Mas enfim, segue o código, caso consiga me indicar o suposto - e/ou pq “ele” voltou a funcionar"…
package adivinhação;

import java.rmi.activation.ActivationSystem;
import java.util.Random;
import java.util.Scanner;

public class adv_num_0a100 {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int dfcl,chute,pgt;
	int vidas = 0;
	Random aleatorio = new Random();
	int numero_misterioso = aleatorio.nextInt(100) + 1;
	boolean tentarnovamente = false;
	boolean ptgnovamente= false;
	boolean ptgnovamente2= false;
	String pergunta = "";
	String status = "";

	do {
	System.out.println("A dificuldade definirá quantas chances tu terá para acertar o número misterioso ");
	System.out.println("                     que vai de 0 a 100                                         ");
	System.out.println("1- muito jovem para morrer");
	System.out.println("2-    um tapinha não dói  ");
	System.out.println("3-      ultraviolento     ");
	System.out.println("4-         pesadelo        ");
	do {
    System.out.println("Informe o número da dificuldade escolhida:");
    dfcl  = sc.nextInt();

	if(dfcl == 1) {
		vidas = 100;
		ptgnovamente = false;
	}
	else if(dfcl==2) {
		vidas = 50;
		ptgnovamente = false;
	}
	else if(dfcl==3) {
		vidas = 10;	
		ptgnovamente = false;
	}
	else if(dfcl==4) {
		vidas = 1;
		ptgnovamente = false;
		
	}
	if(dfcl<1 || dfcl>4){
		ptgnovamente = true;
	}
	}while(ptgnovamente);
	for(int round = 1;round <= vidas;round++) {
		do {
		System.out.printf("Digite o %2dº chute de %d.\n",round,vidas);
		chute = sc.nextInt();
		
		if(chute >= 1 && chute <= 100) {
			
			if(chute == numero_misterioso) {
				status="correto";
			}
			else if(chute > numero_misterioso) {
				status="passou";
			}
			else if(chute < numero_misterioso) {
				status="faltou";
			}
							
			switch (status) {
			case "correto":
				System.out.println("Redemption Denied, fim de jogo...... ");
				System.out.println("tô brincando, vc ganhou");
					
				round = vidas;
				break;
			case "passou":
				System.out.println("o chute foi maior que o número misterioso ");
				break;
			case "faltou":
				System.out.println("o chute foi menor que o número misterioso ");
				break;				
			}	
		}
		else {
			System.out.println("não foi digitado um numero entre 0 e 100");
			tentarnovamente = true;
		}
	}while(tentarnovamente);	
		
	}
	System.out.println("Fim de jogo");	
	System.out.println();
	do {
	System.out.println("Deseja continuar (1-sim/2-nao)?");
	System.out.println("Digite o numero correspondente:");
	pgt = sc.nextInt();
	System.out.println();
	
	if (pgt==1 ) {
			ptgnovamente2 = false;
			pergunta="sim";
	}
	else if(pgt ==2) {
		ptgnovamente2 = false;
		pergunta="nao";
	}
	else {
	ptgnovamente2 = true;
	}
	
	}while(ptgnovamente2);
	}while (pergunta.equalsIgnoreCase("sim"));
	sc.close();
	System.out.println("Sem redenção pra ti");
}

}

Está funcionando pq computação é uma ciência não determinística, mística e exotérica. O computador decide quando vai fazer direito ou não. É assim mesmo, não se assuste… (é brincadeira tá?)