繁体   English   中英

哈希表NullPointerException

[英]Hashtable NullPointerException

我分配了一个工作,使用哈希表设计一个简单的垃圾邮件过滤器,以存储一组“坏词”。 我们在课堂上讨论了什么是哈希表以及如何使用哈希表(即元素如何插入,线性探测,二次探测,链式探测等),但是我们从未真正讨论过如何使用Java API哈希表。为此作业。 无论如何,我尽了最大的努力来实现它,但是,我遇到了一个异常,我似乎无法使用调试器进行跟踪。

我已经放弃在这里插入代码了,我总是不得不花时间对其进行正确的格式化,但看起来还是不太好。 因此,我将其放在Pastebin上。 由于它还可以突出显示语法和行数,因此也应该使您的生活更轻松。

SpamFilter类
SpamFilterDriver类

我在SpamFilterDriver类的以下几行中获得NullPointerExceptions:
78行
96行
115行

任何帮助,将不胜感激。 我敢肯定这可能很愚蠢,但是我暂时还没有看到。



另外,请注意,代码至少还没有完成。 SpamFilter实现Serializeable的事实将在以后使用。 另外,还有一些空方法,它们将在以后实现,我只需要先解决这个问题即可。

您必须初始化SpamFilter filter; 在您的SpamFilter类中。 在调用其任何方法之前。

在第78行,您正在调用方法isBadWord()

在调用任何方法之前,请尝试如下初始化filter 如果不初始化过滤器,则默认值为null,并且在调用具有null的方法时会增加BOOM BOOM NPE被引发

    private static SpamFilter filter = new SpamFilter();// 

在每一行中,观察到您正在调用filter方法。 Java将抛出NullPointerException因为filter的值为null

为什么其值为null 因为您从未为其分配值; 你只是宣布而已。 您可以在声明它时立即设置其值,或者由于它是静态字段,所以可以使用静态构造函数为其分配值。

您的filter未初始化,因此无论在何处使用都会失败。 它仅在顶部声明为private static SpamFilter filter; ,使filter为null。

要解决此问题,请在声明为时将filter初始化为

      private static SpamFilter filter = new SpamFilter(); 

或在while main()循环之前的main()方法中

      filter = new SpamFilter();

看起来您从未初始化过filter属性,因此无论何时尝试使用它,都会得到NullPointerException。

尝试将第6行替换为:

private static SpamFilter filter = new SpamFilter();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM