Java Scanner wartet nicht auf Benutzereingaben [duplicate]

Lesezeit: 1 Minute

Ich verwende den Scanner von Java, um Benutzereingaben zu lesen. Wenn ich nextLine nur einmal verwende, funktioniert es OK. Mit zwei nextLine wartet man zunächst nicht darauf, dass der Benutzer die Zeichenfolge eingibt (die zweite tut es).

Ausgabe:

X: Y: (auf Eingabe warten)

Mein Code

System.out.print("X: ");
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();

Irgendwelche Ideen, warum das passieren könnte? Vielen Dank

  • wenn ich das versuche funktioniert es einwandfrei. y wird erst nach Benutzereingabe und enter ausgedruckt. Wie sieht dein Scanner aus? ich benutzte Scanner scanner = new Scanner(System.in);

    – Sarah S

    3. Mai 2014 um 22:37 Uhr


Benutzer-Avatar
Alexis C.

Es ist möglich, dass Sie eine Methode wie aufrufen nextInt() Vor. Also ein Programm wie dieses:

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

zeigt das Verhalten, das Sie sehen.

Das Problem ist, dass nextInt() verbraucht die nicht '\n'also der nächste Anruf an nextLine() verbraucht es und wartet dann darauf, die Eingabe zu lesen y.

Sie müssen die konsumieren '\n' vor dem Anruf 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();

(Eigentlich wäre es besser, direkt anzurufen nextLine() gemäß nextInt()).

  • @AnubianNoob Das einzige Problem, das ich bei dieser Frage sehe, ist, dass sie zuvor hier gepostet wurde: stackoverflow.com/questions/7877529/…

    – B537B7725DC58715F6E6BFA7AFC20C

    13. September 2015 um 3:15 Uhr

1014260cookie-checkJava Scanner wartet nicht auf Benutzereingaben [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy