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

问题描述 投票:0回答:1

我一直在研究一个HuffmanCode程序,我想我今天早上已经完成了它。然而,我已经随机开始获得一个NullPointerException,即使它今天早些时候工作得很好。下面是导致问题的方法:( port =树的左侧,star =树的右侧)

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)

我尝试检查类似问题的答案,但我无法理解它们。

java decoding huffman-code
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.