PDA

View Full Version : [Frage] scanner nextLine() funzt nicht


prymus
09-10-2007, 21:01
hi.
ich bin grad dabei, die erste übungsrunde zu implementieren nur irgendwie funzt der scanner nicht.

Ich hab einerseits oben:


.......
Scanner read = new Scanner(System.in);
.......
und dann der teil der funktioniert:


.......
if (read.next().charAt(0) == 'j')
{
go = true;
}
.......
und dann

.......
if (go)
{
System.out.println("\n\n\nBitte geben Sie Ihren Namen ein.");
player = read.nextLine(); // <-- hier
System.out.println("Hallo " + player);
System.out.println("Zu welchem Reisebuero moechten Sie gehen?");
System.out.println(" - FarAway Turisitk (f)");
System.out.println(" - TooNear Reisen (t)");
if (read.next().charAt(0) == 'f') agency = "FarAway Turistik";
else agency = "TooNear Reisen";
}
.......


und genau bei //<-- hier überspringt er das read.nextLine(); und macht weiter. und gibt "Hallo " usw aus.

kann mir jemand helfen?

lg jakob

Flo Felberbauer
09-10-2007, 21:08
hast du java.util.Scanner inkludiert?

import java.util.Scanner; ganz am beginn der datei!

prymus
09-10-2007, 21:10
ja hab ich.

lg

MyAcc
10-10-2007, 01:05
Tausche doch einmal read.nextLine() gegen read.next() um. Funktioniert dein Programm jetzt korrekt?
Ich nehme an, dass read.nextLine() noch das "End of Line"-Zeichen deiner vorigen Eingabe eingelesen hat.

prymus
10-10-2007, 01:32
japp. das wars. danke.

kannst du mir jetzt auch noch erklären wieso das so ist und wie ich das in Zukunft verhindern kann?

danke.

LG Jakob

MyAcc
10-10-2007, 01:49
die metoden nextInt(), nextDouble(), next()... holen sich jeweils den nächsten Token aus der Eingabe und lassen alles, was hinter dem token steht, übrig. nextLine() liest solange ein, bis eben ein "end of line"-zeichen kommt.

falls du in deinem programm namenseingaben zulassen willst, die aus mehreren wörtern bestehen, kannst du das zum Beispiel so lösen:
...
read.nextLine(); //das "frisst" sozusagen das EOL-Zeichen
player = read.nextLine();
...

prymus
10-10-2007, 08:47
und wie kann ich dann verhindern, dass er das eol zeichen aus der letzten zeile hernimmt, sowie es bei mir das problem war?