首页 > 解决方案 > 获取 NullPointerException 但打印对象返回内存引用和空值

问题描述

我正在尝试制作一个模拟 NFA 的程序,我有状态对象和 NFA 对象(命名机器)。状态对象现在引用其他状态(如树数据结构但没有层次结构),NFA 对象仅定义起始状态,其余的从那里链接。

当我尝试将 NFA(命名机器)的启动状态分配给搜索变量(类型 State)时,问题就出现了。当我稍后尝试使用此对象移出 NFA 时,它会给出一个空指针错误。调试时(由打印语句显示)似乎分配变量似乎工作正常但更奇怪:当我稍后打印对象时,它会打印内存引用和空值。

System.out.println(machine.getStart()); //prints out State@6bc7c054
search = machine.getStart(); //assigns the starting state of the NFA to search variable
System.out.println(search); //prints out State@6bc7c054

... (there is no code related to search variable in this chunk)

System.out.println(search + " last ref");//prints State@6bc7c054 last ref    (and also)
                                                  null last ref
search = search.move(sym);//line that gives NullPointerException 

非常感谢您对这里出了什么问题的任何想法

标签: javanullpointerexception

解决方案


我的答案很明显,但是如果打印了 4 行,那么您应该有 4println条指令(或"\n"其中一条指令),如果没有,请检查隐藏的块println

至于我,最有可能的是,在隐藏的块中,您有一个println可以很好地打印您search + "last ref"的语句和另一个设置searchnull. 如果我是对的,那么您的最后一个println是打印,如果您尝试采取行动null last ref,您将拥有。NullPointerExceptionsearch


推荐阅读