0

一个简单的程序

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

行为有些奇怪:它拒绝输出输入的文本......我使用终端输入一些文本,但输出中没有任何内容。它出什么问题了?

4

3 回答 3

3

这一点都不奇怪。readUTF期望由 .编写的非常具体DataOutputStream的长度前缀格式。这不是您的终端将提供的。有关更多详细信息,请参阅中的文档DataInput.readUTF

您通常应该只使用 aScanner或创建一个InputStreamReaderaroundSystem.in和 a BufferedReaderaround that,然后使用BufferedReader.readLine().

于 2013-02-04T10:56:14.720 回答
2

DataInputStream 用于读取二进制数据。readUTF 需要两个字节的无符号长度,后跟 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 回答