/ / loop infinito while, .nextLine () entrada do usuário - java, string, entrada do usuário, loop infinito

loop while infinito, .nextLine () entrada do usuário - java, string, entrada do usuário, loop infinito

Oi eu tenho uma pergunta sobre o uso de.nextLine e porque ele pula a entrada do usuário pela segunda vez durante o loop infinito. A função .next (entrada de letra) ainda pede entrada do usuário toda vez, mas a função .nextLine (entrada de frase) não. Obrigado.

    import java.util.Scanner;

public class Lab6 {
public static void main (String [] args) {
Scanner in = new Scanner(System.in);
String phrase, l;
char letter;

while (true) {
System.out.println("Enter a phrase. Enter "quit" to quit.");
phrase = in.nextLine();

if (phrase.startsWith("quit")) {
break;
}

System.out.println("Enter a letter");
l = in.next();
letter = l.charAt(0);

System.out.println("Phrase entered is: " + phrase);
System.out.println("Letter entered is: " + letter);

int i = 0;
int count = 0;
while (i < phrase.length()) {
if (phrase.charAt(i) == letter) {
count++;
}
i++;
}
System.out.println(count);
}
}
}

Respostas:

7 para resposta № 1

A razão é que Scanner.next() não consome caracteres de nova linha da entrada do sistema, portanto, a entrada será passada para a instrução:

phrase = in.nextLine();

que agora não bloco tendo recebido a entrada.