J'utilise le scanner de Java pour lire les entrées utilisateur. Si j'utilise nextLine une seule fois, cela fonctionne bien. Avec deux nextLine, le premier n'attend pas que l'utilisateur entre la chaîne (le second le fait).
Production:
X: Y: (attendez l'entrée)
Mon code
System.out.print("X: ");
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();
Des idées pourquoi cela pourrait-il arriver? Merci
Il est possible que vous appeliez une méthode comme nextInt()
avant. Ainsi, un programme comme celui-ci:
Scanner scanner = new Scanner(System.in);
int pos = scanner.nextInt();
System.out.print("X: ");
String x = scanner.nextLine();
System.out.print("Y: ");
String y = scanner.nextLine();
démontre le comportement que vous voyez.
Le problème est que nextInt()
ne consomme pas le '\n'
, Donc le prochain appel à nextLine()
le consomme et attend ensuite de lire l'entrée pour y
.
Vous devez consommer le '\n'
Avant d'appeler nextLine()
.
System.out.print("X: ");
scanner.nextLine(); //throw away the \n not consumed by nextInt()
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();
(en fait, une meilleure façon serait d'appeler directement nextLine()
après nextInt()
).