0

Eclipse で実装しようとしているこの hashCode 関数がありますが、テストが失敗し続けます。単語または数値の最後の 2 文字または 3 文字を返す Hashcode 関数を作成しようとしています。これが私の現在のコードです:

 public int hashCode(String value){
 String test = value;
 int hash = 1;
 int len = test.length();
 System.out.println(len);
 for ( int i=0; i<len; i++ )
       {
       hash = 31 * hash + len;
       }
    return hash;
}

これが私のJunitテストです:

    @Test // hashCode()
 public void testHashCode1() {
  //Integer key1 = 123;
  String key2 = "and";
  assertEquals("and", key2.hashCode());
 }

テストを実行するたびに失敗し、次のように示されます。

期待されていましたが、次のとおりでした: <96727>

今、私はこの関数がWordまたはNumberのいずれかを取り込んで、取り込まれたオブジェクトの最後の2文字または3文字を返すことを本当に望んでいます.hashCodeを使用してこれを行う方法を知っている人はいますか. どんな助けでも大歓迎です

4

2 に答える 2

0

コードをマングリングするエディターの問題かもしれませんが、ループ内のどこにも表示valueまたは使用されていません。test

于 2010-02-19T15:18:19.897 に答える
0

public int hashCode(文字列値)

として呼び出す

assertEquals("and", key2.hashCode());

あなたはそれを適切にオーバーライドしていません。署名を引数を取らないように変更してください:)

于 2010-02-19T15:20:13.653 に答える