Javascript Huffman Decoder / Translate方法较早,但现在导致NullPointerException

时间:2019-03-18 07:57:53

标签: java decoding huffman-code

我一直在研究HuffmanCode程序,我以为我今天早上完成了它。但是,即使今天早些时候运行良好,我也开始随机获得NullPointerException。下面是导致问题的方法:(端口=树的左侧,星形=树的右侧)

public void translate(BitInputStream input, PrintStream output) {
  HuffmanNode tempRootRef = huffmanRootRef;
  while(input.hasNextBit() || (tempRootRef.port == null && tempRootRef.star == null)) {
     if(tempRootRef.port == null && tempRootRef.star == null) {
        output.write(tempRootRef.charValue);
        tempRootRef = huffmanRootRef;
     } else if (input.nextBit() == 0){
        tempRootRef = tempRootRef.port;
     } else {
        tempRootRef = tempRootRef.star;
     }
  }
}

我在第一个if语句上得到NullPointerException

Exception in thread "main" java.lang.NullPointerException
at HuffmanCode.translate(HuffmanCode.java:118)
at HuffmanCompressor.decompress(HuffmanCompressor.java:115)
at HuffmanCompressor.main(HuffmanCompressor.java:178)

我尝试查看类似问题的答案,但是我很难理解它们。

1 个答案:

答案 0 :(得分:0)

假设huffmanRootRef具有非空值,则该行中的NPE意味着input.hasNextBit()返回了true,而tmpRootRefnull

我建议在调试器中或通过几个打印语句来跟踪代码,以观察执行时的值。