J'ai eu des problèmes en essayant d'utiliser la méthode nextLine() de java.util.Scanner.
Voici ce que j'ai essayé :
import java.util.Scanner;
class TestRevised {
public void menu() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
}
Exemple n° 1 : Cet exemple fonctionne comme prévu. La ligne String sentence = scanner.nextLine();
attend la saisie des données avant de passer à l'étape suivante. System.out.print("Enter an index:\t");
.
Cela produit la sortie :
Enter a sentence: Hello.
Enter an index: 0
Your sentence: Hello.
Your index: 0
// Example #2
import java.util.Scanner;
class Test {
public void menu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nMenu Options\n");
System.out.println("(1) - do this");
System.out.println("(2) - quit");
System.out.print("Please enter your selection:\t");
int selection = scanner.nextInt();
if (selection == 1) {
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
else if (selection == 2) {
break;
}
}
}
}
Exemple n° 2 : Cet exemple ne fonctionne pas comme prévu. Cet exemple utilise une boucle while et une structure if - else pour permettre à l'utilisateur de choisir ce qu'il veut faire. Une fois que le programme arrive à String sentence = scanner.nextLine();
il n'attend pas l'entrée mais exécute la ligne System.out.print("Enter an index:\t");
.
Cela produit la sortie :
Menu Options
(1) - do this
(2) - quit
Please enter your selection: 1
Enter a sentence: Enter an index:
Ce qui rend impossible l'entrée d'une phrase.
Pourquoi l'exemple n° 2 ne fonctionne-t-il pas comme prévu ? La seule différence entre les exemples 1 et 2 est que l'exemple 2 comporte une boucle while et une structure if-else. Je ne comprends pas pourquoi cela affecte le comportement de scanner.nextInt().
0 votes
En rapport : stackoverflow.com/questions/4708219/
0 votes
Dans l'exemple # 2, avant cette ligne String sentence = scanner.nextLine() ; ajouter la ligne suivante sc.nextLine() ;