![](/img/trans.png)
[英]Getting NullPointerException from Hashtable while using GObject method
[英]Hashtable NullPointerException
我分配了一個工作,使用哈希表設計一個簡單的垃圾郵件過濾器,以存儲一組“壞詞”。 我們在課堂上討論了什么是哈希表以及如何使用哈希表(即元素如何插入,線性探測,二次探測,鏈式探測等),但是我們從未真正討論過如何使用Java API哈希表。為此作業。 無論如何,我盡了最大的努力來實現它,但是,我遇到了一個異常,我似乎無法使用調試器進行跟蹤。
我已經放棄在這里插入代碼了,我總是不得不花時間對其進行正確的格式化,但看起來還是不太好。 因此,我將其放在Pastebin上。 由於它還可以突出顯示語法和行數,因此也應該使您的生活更輕松。
我在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.