Was ist der Unterschied zwischen next () - und nextLine () -Methoden aus der Scanner-Klasse?
Was ist der Unterschied zwischen next()
und nextLine()
?
Mein Ziel ist es, Lesen Sie den gesamten text mit einem Scanner
werden kann "verbunden" keiner Quelle (Datei, zum Beispiel).
Welche soll ich wählen und warum?
InformationsquelleAutor der Frage AnnieOK | 2014-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich immer lieber zu Lesen Eingabe mit
nextLine()
und dann Parsen der Zeichenfolge.Mit
next()
erst wieder was kommt, bevor ein Raum.nextLine()
verschiebt automatisch den scanner nach der Rückkehr der aktuellen Zeile.Ein nützliches Werkzeug für die Analyse von Daten aus
nextLine()
wärestr.split("\\s+")
.Für weitere Informationen über die Scanner-Klasse oder String-Klasse finden Sie auf die folgenden links.
Scanner: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
String: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
InformationsquelleAutor der Antwort Tristan
next()
Lesen kann die Eingabe nur bis zum Leerzeichen. Es kann nicht Lesen, zwei Wörter durch ein Leerzeichen getrennt. Auchnext()
stellen Sie den cursor in der gleichen Zeile nach dem Lesen der Eingabe.nextLine()
liest die Eingabe, einschließlich Leerzeichen zwischen den Wörtern (d.h. Sie liest bis das Ende der Zeile\n
). Nachdem die Eingabe gelesen wurde,nextLine()
positioniert den cursor in die nächste Zeile.Für das Lesen der ganzen Zeile, die Sie verwenden können
nextLine()
.InformationsquelleAutor der Antwort RKC
Aus Der JavaDoc:
Also im Falle
"small example<eol>text"
next()
zurückkehren sollte "klein" undnextLine()
zurückkehren sollte "kleines Beispiel"InformationsquelleAutor der Antwort Oleg Sklyar
Was ich bemerkt habe, abgesehen von next () - scannt nur bis Platz wo, wie nextLine - () durchsucht die gesamte Linie ist, dass nächsten wartet, bis es erhält ein komplettes token wo, wie nextLine - () wartet nicht, bis die komplette token, wenn immer '\n' ist erhalten(ich.e-Mail, wenn Sie drücken Sie die enter-Taste) scanner-cursor springt in die nächste Zeile und gibt die Vorherige Zeile übersprungen. Es wird nicht überprüft, ob den, ob Sie gegeben haben, die vollständige Eingabe oder nicht, auch dauert es eine leere Zeichenfolge in dem als "next ()" nicht leer string
Versuchen Sie dieses Programm, um die änderung der next() und nextLine - () in der for-Schleife, gehen Sie auf drücken von '\n', enter-Taste ohne eine Eingabe, können Sie feststellen, dass die Verwendung nextLine - () - Methode beendet nach drücken bestimmte Anzahl von Fällen, in denen als next() doesnot kündigenbis Sie liefern und input für die gegebene Zahl von Fällen.
InformationsquelleAutor der Antwort murali krish
Vom javadocs
next() Liefert das nächste token, wenn es dem Muster entspricht, wurden aus dem angegebenen string.
nextLine - () Fortschritte dieser scanner nach der aktuellen Zeile und gibt die Eingabe übersprungen wurde.
Welche Sie wählen hängt davon ab, welche Ihren Bedürfnissen am besten passt. Wenn es nach mir ginge lese eine ganze Datei, die ich gehen würde für nextLine-bis ich alle hatte-Datei.
InformationsquelleAutor der Antwort onesixtyfourth
Für diese Frage, der entscheidende Punkt ist, um herauszufinden, wo die Methode wird angehalten, und wo ist der cursor nach dem aufrufen der Methoden. Alle Methoden werden Informationen Lesen (nicht enthalten whitespace) zwischen der Cursorposition und dem nächsten Standard-Trennzeichen(Leerzeichen, Tabulator, \n--erstellt durch drücken von Enter) und der cursor Stoppt, bevor Sie das Trennzeichen aus, mit Ausnahme der nextLine - (), die liest Informationen (einschließlich Leerzeichen erstellt durch Trennzeichen) zwischen der cursor-position und \n und der cursor Stoppt hinter "\n".
Zum Beispiel:
( | repräsentieren die aktuelle cursor-position;
_ Vertretung Leerzeichen;
stream in Fettdruck, die Informationen die man durch die aufrufende Methode)
23_24_25_26_27\n
Aufruf nextInt(); Lesen 23|_24_25_26_27\n
Call nextDouble(); Lesen 23_24|_25_26_27\n
Aufruf next(); Lesen 23_24_25|_26_27\n
Call-nextLine - (); Lesen 23_24_25_26_27\n|
Danach die Methode sollte aufgerufen werden, je nach Ihrer Anforderung.
InformationsquelleAutor der Antwort Z. Zhang
Kurz gesagt: wenn Sie die Eingabe ein string-array der Länge t, dann Scanner#nextLine - () erwartet, dass t-Linien, ist jeder Eintrag im string-array unterscheiden sich von den anderen durch die enter-Taste.Und Scanner#next() nehmen, Eingänge, bis Sie die EINGABETASTE drücken, speichert aber Strings(Wort) im inneren des Arrays, die durch Leerzeichen getrennt werden.
Können einen Blick auf folgenden code-snippet
wenn ich obigen code-snippet in meiner IDE (sagen wir für die string-Länge 2),ist es egal, ob ich mein string als
Eingabe als :- abcd-abcd oder
Eingabe als :-
abcd
abcd
Ausgabe wird wie
abcd
abcd
Aber wenn in gleichen code ersetzen wir die next () - Methode nextLine - ()
Dann, wenn Sie geben Sie Eingabe-prompt-als -
abcd abcd
Ausgabe ist :-
abcd abcd
und wenn Sie geben Sie den Eingabe-prompt wie
abcd (und wenn Sie drücken Sie die EINGABETASTE, um das nächste abcd in einer anderen Linie, die Eingabe-Aufforderung wird nur verlassen und Sie werden die Ausgabe -)
Ausgabe ist:-
abcd
InformationsquelleAutor der Antwort himani1349
Aus der Dokumentation für Scanner:
Aus der Dokumentation für nächste():
InformationsquelleAutor der Antwort Foobar
next() und nextLine - () - Methoden sind im Zusammenhang mit Scanner und ist für das erste String-Eingänge. Ihre Unterschiede sind...
next() kann die Eingabe nur bis zum Leerzeichen. Es kann nicht Lesen, zwei Wörter durch ein Leerzeichen getrennt. Auch die next () - setzt den cursor in der gleichen Zeile nach dem Lesen der Eingabe.
nextLine - () liest die Eingabe, einschließlich Leerzeichen zwischen den Worten (das ist, liest es bis zum Ende der Zeile \n). Nachdem die Eingabe gelesen wurde, nextLine - () positioniert den cursor in die nächste Zeile.
Ausgabe:
Eingabe-string für die c
abc def
c ist abc
Eingabe-string für d
d ist def
Wenn Sie nextLine - () anstelle von next() dann
Ausgabe:
Eingabe-string für die c
ABC DEF
c ist ABC DEF
geben Sie string für d
GHI
d ist GHI
InformationsquelleAutor der Antwort Musaddique
Nur auf ein weiteres Beispiel für Scanner.next() und nextLine - () ist, wie unten :
nextLine - () lässt keine Benutzer geben, während next() macht den Scanner warten und Lesen Sie die Eingabe.
InformationsquelleAutor der Antwort annoo9605
Einen scanner bricht der Eingabe in Token mit einem Trennzeichen Muster, die per default die bekannten Leerzeichen.
Next() verwendet, um ein einziges Wort Lesen und wenn es dann ein Leerzeichen,Stoppt er das Lesen und der cursor wieder in seine ursprüngliche position.
NextLine - () während dies liest man ein ganzes Wort, auch wenn es entspricht einem Leerzeichen.der cursor Stoppt, wenn Sie fertig Lesen und cursor Rücken an das Ende der Zeile.
so u brauchen nicht zu verwenden delimeter, wenn Sie wollen Lesen Sie eine vollständige Wort wie einen Satz.Sie brauchen nur zu verwenden NextLine - ().
InformationsquelleAutor der Antwort Negash
Ich habe auch ein problem bzgl. der Trennzeichen.
die Frage war über alle Eingänge
Das problem
Die Lösung
Verwendet habe ich das Trennzeichen für meinen scanner und gingen erfolgreich.
Beispiel
InformationsquelleAutor der Antwort Negash