scanner nextLine() funzt nicht

  • hi.
    ich bin grad dabei, die erste übungsrunde zu implementieren nur irgendwie funzt der scanner nicht.

    Ich hab einerseits oben:

    Code
    .......
    Scanner read = new Scanner(System.in);
    .......

    und dann der teil der funktioniert:

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

    und dann

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

    kann mir jemand helfen?

    lg jakob

  • 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.

  • 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

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

  • und wie kann ich dann verhindern, dass er das eol zeichen aus der letzten zeile hernimmt, sowie es bei mir das problem war?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!