web-dev-qa-db-ja.com

DataInputStream非推奨のreadLine()メソッド

私はJava 6.を使用してDataInputStream in = new DataInputStream(System.in);を使用してユーザー入力を読み取ります。readLine()が非推奨になったとき。

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)
{
}

readLine()が非推奨になったときの説明としてください。

28
Some Java Guy

InputStreamは基本的にバイナリ構造です。 textデータ(コンソールなどから)を読みたい場合は、説明のReaderを使用する必要があります。 InputStreamReaderに変換するには、InputStreamReaderを使用します。次に、BufferedReaderの周りにReaderを作成すると、BufferedReader.readLine()を使用して行を読み取ることができます。

その他の選択肢:

  • Scanner ビルドラウンド_System.in_を使用し、_Scanner.nextLine_を呼び出します
  • ConsoleSystem.console()から取得)を使用して、_Console.readLine_を呼び出します
31
Jon Skeet

非推奨と代替案は、通常 javadocs で既に明示的に説明されています。したがって、答えを探す最初の場所になります。 DataInputStreamの場合は、それを見つけることができます こちらreadLine()メソッドは here です。関連性の抜粋は次のとおりです。

廃止予定このメソッドは、バイトを文字に適切に変換しません。 JDK 1.1の時点で、テキストの行を読み取るための好ましい方法は、BufferedReader.readLine()メソッドを使用することです。 DataInputStreamクラスを使用して行を読み取るプログラムは、次の形式のコードを置き換えることにより、BufferedReaderクラスを使用するように変換できます。

    DataInputStream d = new DataInputStream(in);

で:

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

次に、InputStreamReaderのコンストラクターで文字エンコードを明示的に指定できます。

Java 1.5以降)が導入された Scanner も、優れた(そして最新の)代替手段です。

25
BalusC

以下は機能しませんが、

_num = Integer.parseInt(in);
_

代わりに使用する必要があります:

_num = Integer.parseInt(in.readLine());
_

readLine()は、改行まで行の入力を読み取ります。

0
user3950170