Formas de controle do while

fala galera beleza, então eu estava fazendo um programa aqui em casa, então pensei adicionar um while para o programa ficar funcionando sem eu precisar que executar ele novamente. Bom o programa é simples, porém eu escrevi ao compilador para ser exibido uma mensagem perguntando se deseja fazer uma nova consulta ou não e em seguida adicionei um if que verifica se o usuario digitou não, porem quando chega na parte onde o usuario tem que digitar se quer fazer uma nova consulta ou não o programa passa direto e não espera o usuario digitar, o que eu estou fazendo de errado nisso ?

código:

**public static void main (String []args) {**

** Scanner entrada = new Scanner (System.in); **
** int idade = 1;**
** String controle = “sim”;**


** while(idade >0) {// foi adicionado este while para não ser preciso inciar o programa toda vez que quiser fazer um novo calculo**
** System.out.printf(“Digite sua idade que eu vou calcular a frequencia máxima que o seu coração pode ter: %n”);**
** idade = entrada.nextInt();**


** leitor leitor = new leitor (idade);//manda o valor de idade para a classe construtora leitor **



** if (idade == 0) {**
** System.out.printf(“você não digitou uma idade valida e o programa fechou”);**
** controle = “não”;**
** }if (idade > 0) {**
** System.out.printf("%n sua frequencia maxima é: %s %n", leitor.resultado());**
** }**


** System.out.printf(“deseja fazer uma nova consulta ? %n”);**
** controle = entrada.nextLine();**
** }**


** }**
}

na saida ele sai da seguinte maneira:

Digite sua idade que eu vou calcular a frequencia máxima que o seu coração pode ter:
22

sua frequencia maxima é: 198
deseja fazer uma nova consulta ?
Digite sua idade que eu vou calcular a frequencia máxima que o seu coração pode ter:

quando chega na parte da pergunta “deseja fazer uma nova consulta ?” ele não espera o usuario digitar porque isso acontece ?

A condicao do seu while é o campo idade que você lê bem acima em idade = entrada.nextInt(); ai independente do que você adicinar na sua variavel controle ela não vai interferir no comportamento do while

Não use o nextInt para entrada de texto pelo teclado, use somente o nextLine:

idade = Integer.parseInt(entrada.nextLine());

É difícil explicar isso, mas entenda que quando vc digita ‘22’ e aperta enter, o Scanner lê ‘22\n’, então o nextInt retornará ‘22’ e o nextLine retornará uma String vazia.

  	Scanner entrada = new Scanner (System.in);
  	System.out.println("Digite exatamente: 22 33 Novembro");
  	int nextInt1 = entrada.nextInt();
  	int nextInt2 = entrada.nextInt();
  	String nextLine = entrada.nextLine();
  	
  	System.out.println("nextInt1: " + nextInt1);
  	System.out.println("nextInt2: " + nextInt2);
  	System.out.println("nextLine: " + nextLine);

Teste isto com a seguinte entrada: 22 33 Novembro