簡體   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