2017-03-02 2 views
1

ich Scanner bin mit Eingang eines String.My Code zu bekommen, ist wie untenScanner weißen Flecken am Anfang zu vernachlässigen

String s=scan.next(); 
if(scan.hasNext()){ 
    s +=scan.nextLine(); 
} 

Aber das Problem ist es nicht, die weißen Flecken am Anfang liest.

Beispiel

Input   : Hello World 

Output should be : Hello World 

Output is  :Hello World 

Bitte klären, was der Fehler ist und mir helfen, zu beheben.

+0

Verwendung scan.nextLine(); –

Antwort

1

next() Methode wird verwendet, um das nächste Wort (Token) ohne vorangestellte Trennzeichen zu erhalten. Das Standardtrennzeichen, das vom Scanner verwendet wird, ist ein oder mehrere Leerzeichen, so dass es vom Design ignoriert wurde.

Wenn Sie möchten, dass s die gesamte Zeile (oder den Rest der aktuellen Zeile) einschließlich Trennzeichen enthält, dann überspringen Sie next() und verwenden Sie nur nextLine().

String s = scan.hasNextLine() ? scan.nextLine() : ""; 

Aber vorsichtig sein Problem, das häufig konfrontiert wird, wenn wir next und nextLine in beschrieben mischen: Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods

0

Lesen Sie den Scanner documentation

scan.next() bricht die Eingabe in Token auf weißen Raum basieren.

Ein Scanner unterbricht seine Eingabe in Token mit einem Trennzeichenmuster , das standardmäßig mit Leerzeichen übereinstimmt.

Versuchen Sie folgendes:

String s=""; 
     if(scan.hasNext()){ 
     s +=scan.nextLine(); 
    } 
Verwandte Themen