webentwicklung-frage-antwort-db.com.de

DataInputStream hat die readLine () - Methode aufgegeben

Ich bin auf Java 6. Verwenden Sie DataInputStream in = new DataInputStream(System.in);, um die Benutzereingaben zu lesen. Wenn die readLine () veraltet ist. Was ist die Arbeit, um den Nutzwert zu lesen?

DataInputStream in = new DataInputStream(System.in);
int num;
try
{
  num = Integer.parseInt(in.readLine()); //this works

  num = Integer.parseInt(in);  //just in doesnt work.
}
catch(Exception e)
{
}

erklären Sie bitte, wie es sollte, wenn readLine () veraltet ist.

26
Some Java Guy

InputStream ist grundsätzlich ein binäres Konstrukt. Wenn Sie text -Daten lesen möchten (z. B. von der Konsole), sollten Sie eine Reader mit einer Beschreibung verwenden. Um eine InputStream in eine Reader zu konvertieren, verwenden Sie InputStreamReader. Erstellen Sie dann eine BufferedReader um die Reader, und Sie können eine Zeile mit BufferedReader.readLine() lesen.

Weitere Alternativen:

  • Verwenden Sie eine Scanner built Runde System.in und rufen Sie Scanner.nextLine auf.
  • Verwenden Sie eine Console (von System.console() erhalten) und rufen Sie Console.readLine auf.
30
Jon Skeet

Deprecation und die Alternativen werden in der Regel bereits explizit in javadocs erläutert. Es wäre also der erste Ort, um nach der Antwort zu suchen. Für DataInputStream können Sie es hier finden. Die readLine()-Methode lautet hier . Hier ist ein Auszug der Relevanz:

Veraltet. Diese Methode konvertiert Bytes nicht ordnungsgemäß in Zeichen. Ab JDK 1.1 werden Textzeilen bevorzugt über die Methode BufferedReader.readLine() gelesen. Programme, die die DataInputStream-Klasse zum Lesen von Zeilen verwenden, können in die BufferedReader-Klasse konvertiert werden, indem der Code des Formulars ersetzt wird:

    DataInputStream d = new DataInputStream(in);

mit:

    BufferedReader d
         = new BufferedReader(new InputStreamReader(in));

Die Zeichenkodierung kann dann im Konstruktor von InputStreamReader explizit angegeben werden.

Das seit Java 1.5 eingeführte Scanner ist auch eine gute (und moderne) Alternative.

24
BalusC

Das unten funktioniert nicht,

num = Integer.parseInt(in);

Verwenden Sie stattdessen:

num = Integer.parseInt(in.readLine());

readLine() liest eine Eingabe der Zeile bis zum Zeilenumbruch.

0
user3950170