0

簡単なプログラム

    DataInputStream in = new DataInputStream(System.in);
    while(true)
        System.out.println(in.readUTF());

やや奇妙な動作をします。入力されたテキストの出力を拒否します...端末を使用してテキストを入力しましたが、出力には何もありません。どうしたの?

4

3 に答える 3

3

それはまったく奇妙ではありません。によって記述された、非常に特定の長さプレフィックス形式をreadUTF想定しています。それはあなたの端末が提供するものではありません。詳細については、のドキュメントを参照してください。DataOutputStreamDataInput.readUTF

通常は、aを使用するScannerか、InputStreamReaderaroundSystem.inを作成し、その周りを作成しBufferedReaderて、を使用する必要がありますBufferedReader.readLine()

于 2013-02-04T10:56:14.720 に答える
2

DataInputStreamは、バイナリデータを読み取るためのものです。readUTFは、2バイトの符号なし長の後にUTF-8の文字が続くことを想定しています。(あなたが興味を持っているなら、あなたはそれのドキュメンテーションのヒント、ヒントを読むことができます)

あなたが使用しようとしていたのは、テキストを読み取るように設計されたスキャナーだったと思います。

Scanner in = new Scanner(System.in);
while(in.hasNextLine())
    System.out.println(in.nextLine());
于 2013-02-04T10:56:19.150 に答える
0

あなたはのように試すことができます

String str;
while((str = in.readUTF()) != null) {
     System.out.println(str);
}
于 2013-02-04T10:58:09.127 に答える