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 № 1La 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.