2010-02-24 108 views
2

这可能是一种寻求帮助的小传统方式,但是我的代码正在运行到空指针运行时错误中,但运行时错误的范围太大而无法传递到stackoverflow。我真的很想弄明白这一点,所以我可以通过电子邮件向我们发送一封电子邮件,了解哪些问题?我知道运行时错误告诉它正在跳动的特定线路号,但我真的无法制定正面或反面为什么它发生在那里。非常感谢你!!Java运行时错误:空指针异常

堆栈跟踪:

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) 
+1

只需发布代码。通过公开发布您的问题,并将解决方案置于其下方,您可能可以在将来为其他人提供洞察力。 – 2010-02-24 07:12:52

+2

**和堆栈跟踪** – flybywire 2010-02-24 07:14:45

+0

这跨越了几个不同的文件,并且因为它超过5000行代码,所以这样做是非常困难的。不过,我认为这对于有经验的用户来说是一个简单的修复方法,应该少于5分钟。 – dukevin 2010-02-24 07:14:59

回答

9

从您的评论:

public int getNumRandOccupants() { return randOccupants.size(); } 

因为这是你的堆栈跟踪的顶部,这意味着randOccupants字段为空的时候这种方法调用。

此外,如果您在addRandomOccupant处获得另一个NPE,则同样的集合也可能为null。您可能已经忘记构建集合。

+0

感谢您的帮助。但是,“忘记构建集合”意味着什么。 – dukevin 2010-02-24 07:27:42

+1

@Kevin:我认为'Maze'类有一个代表占用者“集合”的字段。像'private List randOccupants;'。我认为你已经声明了该字段,但忘记将其初始化为适当集合的一个实例,即'private List randOccupants = new ArrayList ();'。你也可以在'Maze'的构造函数中构造集合。 – 2010-02-24 07:30:11

+0

哇!这实际上做到了!谢谢!!如果可能的话,我会给你发10美元的电子邮件给你... – dukevin 2010-02-24 07:39:13