Java 哈夫曼解码EOF字符命中空点异常

Java 哈夫曼解码EOF字符命中空点异常,java,project,decoding,compression,huffman-code,Java,Project,Decoding,Compression,Huffman Code,嗨,我正在解码一个使用哈夫曼编码压缩的文件。我们使用EOF字符来表示我们已经完成了解压缩。每当我为一个EOF字符编码时,我就会点击一个NullPointerException。当我不包括对它的检查时,它可以正常工作,但我最终使用EOF字符。我不明白我是如何得到NullPointerException的,我非常感谢任何能提供帮助的人。多谢各位 public static void decompress(String in, String out) { try {

嗨,我正在解码一个使用哈夫曼编码压缩的文件。我们使用
EOF
字符来表示我们已经完成了解压缩。每当我为一个
EOF
字符编码时,我就会点击一个
NullPointerException
。当我不包括对它的检查时,它可以正常工作,但我最终使用
EOF
字符。我不明白我是如何得到
NullPointerException
的,我非常感谢任何能提供帮助的人。多谢各位

public static void decompress(String in, String out)
{
    try 
    {   
        String result = "";
        BinaryNode<Character> pointer = huffTree;
        ArrayList<Character> a = new ArrayList<Character>();
        File outFile = new File(out);
        FileOutputStream decompressedFile = new FileOutputStream(outFile);

        for(char c : decodings.toString().toCharArray())
        {
            if(c == '0')
            {
                pointer = pointer.getLeft();
            }
            else if(c == '1')
            {
                pointer = pointer.getRight();
            }
            if(pointer.isLeaf())
            {
                if(pointer.getElement() == '^')
                {
                    return;
                }
                 decompressedFile.write(pointer.getElement());
                pointer = huffTree;
            }
        }
        decompressedFile.close();
    }
    catch(Exception e)
    {
        System.err.println("Error");
        e.printStackTrace();
    }
}
publicstaticvoid解压(串入、串出)
{
尝试
{   
字符串结果=”;
BinaryNode指针=huffTree;
ArrayList a=新的ArrayList();
文件输出文件=新文件(输出);
FileOutputStream decompressedFile=新的FileOutputStream(输出文件);
for(char c:decodings.toString().toCharArray())
{
如果(c=='0')
{
pointer=pointer.getLeft();
}
else如果(c=='1')
{
指针=pointer.getRight();
}
if(指针.isLeaf())
{
if(pointer.getElement()=='^')
{
返回;
}
解压缩file.write(pointer.getElement());
指针=huffTree;
}
}
解压缩file.close();
}
捕获(例外e)
{
System.err.println(“错误”);
e、 printStackTrace();
}
}

空指针异常发生在哪里?(根据堆栈跟踪)在带有
if(pointer.getElement()=='^')
什么是BinaryNode的行上?我只是猜测,但我认为
pointer.getElement()='^'
是多余的,因为只有当
pointer.getElement()!='^'时,您才在该块中。另外,如果没有
pointer.getElemnt()
返回
null
是否存在问题?哎呀,是的,你是对的。没有
指针。getElement()!=“^”我没有得到
NullPointerException
但是它仍然没有忽略EOF字符…你在哪里检查EOF?