Unterschied Scanner und BufferedReader?
"BufferedReader verwendet Zeichenströme, um Text aus der Eingabe zu lesen, während Scanner verwendet werden kann, wenn wir die primitive Art der Eingabe haben."
https://www.delftstack.com/de/howto/java/user-input-java/
Habe ich so im Internet gefunden, allerdings verstehe ich den Unterschied immer noch nicht. Zum Beispiel verstehe ich nicht, welchen Datentyp die Eingabe hat.
Was ich auch nicht verstehe: Scanner kann doch auch bei nicht-primitiven Arten verwendet werden, z.B. bei Strings mithilfe der nextLine()-Methode.
LG Kath
3 Antworten
BufferedReader liest die Eingabe zeichen- oder zeilenweise aus, unabhängig davon, was für Daten enthalten sind. Die Rückgabe sind dann ein Byte, Byte-Array oder String, je nach verwendeter Methode.
Beim Scanner kannst du direkt den primitiven Typen angeben, der gelesen werden soll. Primitiv bezieht sich dabei auf primitive Datentypen Byte, Integer, Long, Float, Double und String (letzterer ist technisch gesehen kein primitiver Datentyp).
Der Scanner findet in der Eingabe entsprechend bereits den nächsten Wert im richtigen Typ und gibt diesen zurück, so dass man das nicht mehr händisch machen muss.
Ja, allerdings müssen die Zahlen irgendwie vom Rest getrennt sein, z.B. Leerzeichen, sonst werden sie nicht als solche erkannt.
ah okay, vielen Dank!
simpel gesagt:
bufferedreader liest dir daten ein
scanner ist weniger primitiv und lässt dich zusätzlich die eingelesenen daten spezifizieren (als welcher datentyp sollen die daten eingelesen werden?)
Ist dir Stackoverflow kein Begriff?
Scanner
is used for parsing tokens from the contents of the stream while
BufferedReader
just reads the stream and does not do any special parsing.
In fact you can pass a
BufferedReader
to a
scanner
as the source of characters to parse.
doch, klar, recherchiere immer auf vielen Seiten, u.a. auch StackOverFlow, aber das heißt nicht, dass ich das dann verstehe.
z.B. verstehe ich nicht genau, was dieses Parsing sein soll.
Schau mal HIER:
Mit Parsing ist einfach eine Art Übersetzung gemeint, die dann bei der Laufzeit usw unterschiede macht.
Es gibt ja auch Typkonvertierungen und auch dort arbeitest du hin- und wieder mit Parsing.
Dazu gibt es z. B. einen Wikipedia-Artikel. Der ist zugegebenermaßen nicht unbedingt anfängergeeignet. Ebensowenig https://stackoverflow.com/questions/787735/what-is-parse-parsing
Es gibt aber auch ein paar Parse-Funktionen in Java selbst: https://www.google.com/search?q=java+parse - wobei diese allerdings Strings parsen und keine (rohen) Byte-Arrays.
achso also wenn ich bei der Eingabe beim Scanner z.B. Hallo9und10 eingebe, und ints einlese, werden nur 9 und 10 eingelesen?