/ / boucle infinie while, entrée utilisateur .nextLine () - java, chaîne, entrée utilisateur, boucle infinie

Boucle While infinie, entrée utilisateur .nextLine () - java, chaîne de caractères, entrée utilisateur, boucle infinie

Bonjour, j'ai une question concernant l'utilisation de.nextLine et pourquoi il saute la deuxième saisie de l'utilisateur lors de la boucle infinie. La fonction .next (entrée de lettre) demande toujours une entrée utilisateur à chaque fois, mais pas la fonction .nextLine (entrée de phrase). Merci.

    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);
}
}
}

Réponses:

7 pour la réponse № 1

La raison en est que Scanner.next() ne consomme pas de caractères de nouvelle ligne à partir de l'entrée système, donc l'entrée sera transmise à l'instruction:

phrase = in.nextLine();

qui va maintenant ne pas bloc ayant reçu l'entrée.