簡単なプログラム
DataInputStream in = new DataInputStream(System.in);
while(true)
System.out.println(in.readUTF());
やや奇妙な動作をします。入力されたテキストの出力を拒否します...端末を使用してテキストを入力しましたが、出力には何もありません。どうしたの?
簡単なプログラム
DataInputStream in = new DataInputStream(System.in);
while(true)
System.out.println(in.readUTF());
やや奇妙な動作をします。入力されたテキストの出力を拒否します...端末を使用してテキストを入力しましたが、出力には何もありません。どうしたの?
それはまったく奇妙ではありません。によって記述された、非常に特定の長さプレフィックス形式をreadUTF
想定しています。それはあなたの端末が提供するものではありません。詳細については、のドキュメントを参照してください。DataOutputStream
DataInput.readUTF
通常は、aを使用するScanner
か、InputStreamReader
aroundSystem.in
を作成し、その周りを作成しBufferedReader
て、を使用する必要がありますBufferedReader.readLine()
。
DataInputStreamは、バイナリデータを読み取るためのものです。readUTFは、2バイトの符号なし長の後にUTF-8の文字が続くことを想定しています。(あなたが興味を持っているなら、あなたはそれのドキュメンテーションのヒント、ヒントを読むことができます)
あなたが使用しようとしていたのは、テキストを読み取るように設計されたスキャナーだったと思います。
Scanner in = new Scanner(System.in);
while(in.hasNextLine())
System.out.println(in.nextLine());
あなたはのように試すことができます
String str;
while((str = in.readUTF()) != null) {
System.out.println(str);
}