-1

一連の「悪い言葉」を格納するためにハッシュ テーブルを使用する単純なスパム フィルターを設計するという課題があります。クラスでは、ハッシュ テーブルとは何か、その使用方法 (要素の挿入方法、線形プローブ、二次プローブ、連鎖プローブなど) について説明しましたが、必須である Java API ハッシュ テーブルの使用方法については実際には話しませんでした。この割り当てのために。とにかく、実装するために最善を尽くしましたが、デバッガーでトレースできないように見える例外が発生しています。

ここにコードを挿入することをあきらめました。適切にフォーマットするために常に時間を費やさなければならず、それでも見栄えがよくありません。だから私は代わりにPastebinに入れています。構文の強調表示と行カウントも行うため、生活も楽になるはずです。

SpamFilter クラス
SpamFilterDriver クラス

SpamFilterDriver クラスの次の行で NullPointerExceptions を取得します:
78
行目 96
行目 115 行目

どんな助けでも大歓迎です。おそらくばかげたことだと思いますが、現時点ではそれを見ていません。



また、少なくともコードはまだ完成していないことに注意してください。SpamFilter が Serializeable を実装するという事実は、後で使用されます。また、空のメソッドがいくつかありますが、これらは後で実装されます。最初にこの問題を解決する必要があります。

4

4 に答える 4

1

クラスで初期化する必要があり SpamFilter filter;ます。SpamFilterそのメソッドのいずれかを呼び出す前。

78 行目でメソッドを呼び出していますisBadWord()

filterそのメソッドを呼び出す前に、以下のように初期化してみてください。フィルターを初期化しない場合、デフォルト値は null で、null でメソッドを呼び出すとブームBOOM BOOM NPEがスローされます

    private static SpamFilter filter = new SpamFilter();// 
于 2012-11-17T00:51:15.873 に答える
1

これらの各行で、 のメソッドを呼び出していることに注意してくださいfilter。の値が であるNullPointerExceptionため、Java は を取得しています。filternull

その値はなぜnullですか?値を割り当てたことがないためです。あなたはそれを宣言しただけです。宣言したとおりに値を設定することも、静的フィールドであるため、静的コンストラクターを使用して値を割り当てることもできます。

于 2012-11-17T00:51:30.787 に答える
1

あなたfilterは初期化されていないため、使用されている場所では失敗します。上部でのみ宣言されているためprivate static SpamFilter filter;、フィルターはnullになります。

この問題を解決するには、filterいずれかの at 宣言を次のように初期化します。

      private static SpamFilter filter = new SpamFilter(); 

またはループのmain()前のメソッドでwhile

      filter = new SpamFilter();
于 2012-11-17T00:51:37.160 に答える
1

プロパティを初期化していないように見えるfilterため、使用しようとするたびに NullPointerException が発生します。

6 行目を次のように置き換えてみてください。

private static SpamFilter filter = new SpamFilter();
于 2012-11-17T00:52:47.337 に答える