Получение исключения NullPointerException, но печать объекта возвращает как референс памяти, так и нулевое значение - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь создать программу, которая имитирует NFA, у меня есть объекты состояния и объект NFA (с именем machine). Объекты состояния ссылаются на другие состояния (например, древовидную структуру данных, но без иерархии), прямо сейчас объект NFA определяет только начальное состояние, а остальные связаны оттуда.

Проблема возникает, когда я пытаюсь присвоить начальное состояние NFA (именованного компьютера) переменной поиска (тип State). Когда я позже попытаюсь использовать этот объект для перемещения по NFA, он выдаст ошибку нулевого указателя. При отладке (показанной оператором print) кажется, что назначение переменной, кажется, работает правильно, но более странно: когда я печатаю объект позже, он печатает как защиту памяти, так и нулевое значение.

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 

Любые мысли за то, что идет не так, здесь с благодарностью

1 Ответ

0 голосов
/ 03 мая 2020

Мой ответ очевиден, но если напечатано 4 строки, то у вас должна быть инструкция 4 println (или "\n" в одной из них), отметьте скрытый блок, если у вас нет println ,

Что касается меня, то наиболее вероятным является то, что в скрытом блоке есть оператор println, который хорошо печатает ваш search + "last ref", и другой оператор, который устанавливает search в null. Если я прав, то ваш последний println печатает null last ref, и у вас будет NullPointerException, если вы попытаетесь действовать на search.

...