【问题标题】:Getting a NullPointerException but printing the object returns a both a memory refence and a null value获取 NullPointerException 但打印对象返回内存引用和空值
【发布时间】:2020-05-03 04:13:21
【问题描述】:

我正在尝试制作一个模拟 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 

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

【问题讨论】:

    标签: java nullpointerexception


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      相关资源
      最近更新 更多