2010-02-19 67 views
0

我有这个hashCode函数,我一直试图用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>

现在我真的希望这个函数接受一个单词或数字,并返回最后两个或三个字符的对象。有谁知道如何使用哈哈shCode。任何帮助将不胜感激

回答

0

公众诠释的hashCode(字符串值)

并调用作为

的assertEquals( “和”,key2.hashCode());

你甚至不覆盖它正确地更改签名拿不出参数请:)

+1

也hashCode返回一个整数,并不会比较它与一个字符串:) – 2010-02-19 15:21:13

+0

我应该改变我的方法,像这样:public int hashCode(){/ /里面的字符串是一个字符[]瓦尔持有的字符。 int hash = 0; int len = char.length(); for(int i = 0; i Alpdog14 2010-02-19 16:41:15

+0

我不知道如何断线 – Alpdog14 2010-02-19 16:41:44

0

这可能是一个编辑器篡改代码的问题,但我没有看到valuetest在循环内的任何地方使用。

+0

但我LEN = test.length()和len是哈希的一部分= 31 *哈希+ LEN; – Alpdog14 2010-02-19 15:21:02

+0

@alpdog但这些值不会改变循环的每一次迭代,所以你会得到相同的值的所有字符串相同的长度 – 2010-02-19 15:24:47

+0

我应该改变我的方法是这样的: public int hashCode() {//里面的字符串是一个char [] val,它包含字符。 int hash = 0; int len = char.length(); (int i = 0; i Alpdog14 2010-02-19 16:13:33

相关问题