2

尝试实现 MVC 模式,继续回到NullPointerException.

在设置应根据用户输入重新绘制数据的 GUI 区域时,我觉得我错过了一个技巧。例外指向这一点;

display.replot(model.getData(), model.getSamples());

display是一个包含paint方法的类的实例。getData并且getSamples在模型中进行了描述,并且基于设置器,这些设置器应该随着用户对 GUI 的输入而更新。

我认为问题可能与最初为空的数据集有关,所以我为模型提供了初始条件。

4

2 回答 2

2

ANullPointerException表示您正在对不存在的 ( null) 对象调用函数,或者如果函数调用的参数之一是 ,则函数调用可以故意抛出该异常null。您需要检查是哪种情况,并在其if周围放置防护装置或以其他方式确保对象有效。

于 2012-04-16T01:20:15.580 回答
1

使用功能强大的 IDE(例如 IntelliJ)很容易弄清楚 NPE。使用调试器进行测试会让事情变得简单明了。

即使没有,NPE 也很容易弄清楚,因为堆栈跟踪会告诉您 .java 源文件和它发生的行号。您应该能够打开 .java 源文件,打开行号显示,然后直接找到错误的根源。

查看该行上的所有对象引用,看看哪一个是空的。那是您未能初始化的那个。

在您的情况下,我看不到 newPlot 的初始化位置。您只需声明名称和引用类型,但不要求它指向任何内容。默认值为空。

如果传入构造函数的 newData List 为空,您将遇到同样的问题。你不检查它。

于 2012-04-16T01:16:42.377 回答