这可能是一种寻求帮助的非常规方式但我的代码遇到了空指针运行时错误,但运行时错误的范围太大而无法发布到stackoverflow。我真的想弄清楚这一点,所以我可以通过电子邮件向你们中的一个人发送我的代码来找出问题所在吗?我知道运行时错误会告诉它正在绊倒的特定行号,但我老实说无法做出正面或反面的原因。非常感谢!!
堆栈追踪:
java.lang.NullPointerException
at Maze.getNumRandOccupants(Maze.java:118)
at P4TestDriver.testMaze(P4TestDriver.java:995)
at P4TestDriver.main(P4TestDriver.java:116)
at __SHELL8.run(__SHELL8.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bluej.runtime.ExecServer$3.run(ExecServer.java:814)
java.lang.NullPointerException
at Maze.addRandomOccupant(Maze.java:130)
at P4TestDriver.testMazeReadWrite(P4TestDriver.java:1071)
at P4TestDriver.main(P4TestDriver.java:127)
at __SHELL8.run(__SHELL8.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bluej.runtime.ExecServer$3.run(ExecServer.java:814)
答案 0 :(得分:9)
来自你的评论:
public int getNumRandOccupants() { return randOccupants.size(); }
因为它位于堆栈跟踪的顶部,这意味着在调用此方法时randOccupants
字段为空。
此外,如果您在addRandomOccupant
获得另一个NPE,那么同一个集合也可能为空。您可能只是忘记构建集合。