Eingaben einlesen

Ich habe gerade die Wahl eine Usereingabe mittels InputStreamReader oder Scanner einzulesen.
Ehrlich gesagt kann ich die Methode mit dem Scanner besser verstehen. Aber ist es wirklich immer egal, welche der beiden Methoden ich anwende oder kann man sagen “Nein, Methode x ist bei Problem y völlig inakzeptabel!”?

Für stille Mitleser (und -leidende):
http://www.javaschubla.de/2007/javaerst0100.html

Wenn du weißt was für Daten du bekommst, dann solltest du den Scanner verwenden, da dieser schon Methoden anbietet um beispielsweise direkt Integer oder Doubles zu lesen.

Ja, das fand ich am Scanner so nett.
Mit Exceptions bei Falscheingaben müsste ich aber so oder so, egal welche Methode ich verwende, arbeiten, denke ich. Spricht denn irgendwas konkret gegen den Scanner, was InputStreamReader wieder besser machen würde?

Wie gesagt, der Scanner macht meiner Meinung nach nur Sinn wenn du weißt was für Daten du bekommst. Weißt du das nicht, dann nimm einen InputStreamReader.

Okay, danke dir. Zur Zeit weiß ich, was für Daten ich bekomme.

Ich neige dazu bei Benutzereingaben den Worst-Case anzunehmen, sprich - der Benutzer gibt was falsches ein -.-

java.util.Scanner gibt es erst seit der Java Version 1.5 aka J2SE aka Java 5.0 aka Tiger

Der InputStreamReader ist schon seit Version 1.1 dabei.

Da es diesen also schon länger gibt ist er in vielen Beispielen verwendet worden und hat sich daher sehr gut gehalten. Auch für Dinge die man mit dem Scanner einfacher machen kann.