【问题标题】:BinaryStdOut.write doesnt print the Binary OutputBinaryStdOut.write 不打印二进制输出
【发布时间】:2016-04-06 00:33:30
【问题描述】:

some 是 Huffman Trie 的根。 我正在尝试打印通过 PreOrder 中的 Trie 遍历的二进制文件,但未显示二进制输出。有人可以帮忙吗

Huffman.writeTrie(some);


  protected static void writeTrie(Node x) {

        if (x.isLeaf()) {
            BinaryStdOut.write(true);
            BinaryStdOut.write(x.ch, 8);

            return;
        }
        BinaryStdOut.write(false);

        writeTrie(x.left);
        writeTrie(x.right);

    }

【问题讨论】:

  • 好吧,既然我们不知道BinaryStdOut 是什么,这将有点难以帮助。它是类还是对象引用?标准 Java 命名约定表明它是一个类,write 是一个静态方法...但是您是否遵循 Java 命名约定?
  • 我正在使用下面的库algs4.cs.princeton.edu/55compression/BinaryStdOut.java.htmlflush() 似乎工作,但输出很奇怪。示例 BinaryStdOut.write('p', 8); BinaryStdOut.flush();输出:çzºYVûK€

标签: java binary huffman-code


【解决方案1】:

刚刚搜索了一下 BinaryStdOut 是什么,并从普林斯顿的算法参考中找到了这个:http://algs4.cs.princeton.edu/55compression/BinaryStdOut.java.html

它在 cmets 中说:

完成后,客户端必须刷新()输出流 写位。

而且我在您的代码中没有看到flush,所以也许缺少了?听起来像 flush 正在调用 BufferedOutputStream.flush() ,如果它丢失了,那应该为你做。没有看到完整的代码很难回答。

【讨论】:

  • 谢谢。 flush() 似乎有效,但输出很奇怪。示例 BinaryStdOut.write('p', 8); BinaryStdOut.flush();输出:çzºYVûK€
  • 取决于你在哪里运行它以及你将什么数据写入输出。如果它帮助您首先获得输出,请接受该答案。
猜你喜欢
  • 2020-02-14
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2011-02-14
相关资源
最近更新 更多