【问题标题】:Java DataInputStream usage with System.inJava DataInputStream 与 System.in 的使用
【发布时间】:2013-02-04 10:54:10
【问题描述】:

一个简单的程序

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

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

【问题讨论】:

    标签: java datainputstream


    【解决方案1】:

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

    您通常应该只使用Scanner 或在System.in 周围创建一个InputStreamReader,并在其周围创建一个BufferedReader,然后使用BufferedReader.readLine()

    【讨论】:

      【解决方案2】:

      DataInputStream 用于读取二进制数据。 readUTF 需要两个字节的无符号长度,后跟 UTF-8 中的字符。 (如果你有兴趣,你可以阅读它的文档提示,提示)

      我怀疑您打算使用的是用于阅读文本的扫描仪。

      Scanner in = new Scanner(System.in);
      while(in.hasNextLine())
          System.out.println(in.nextLine());
      

      【讨论】:

        【解决方案3】:

        你可以试试吗

        String str;
        while((str = in.readUTF()) != null) {
             System.out.println(str);
        }
        

        【讨论】:

          猜你喜欢
          • 2012-06-18
          • 2021-07-23
          • 2015-04-25
          • 2011-05-05
          • 2018-10-11
          • 2012-06-09
          • 2018-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多