I는 다음과 같습니다 내 해시 함수를 통해 값을 ASCII로 내 문자열을 변환하려고에 문자열을 변환 :java.lang.NumberFormatException의 : ASCII
public long hash(String word){
StringBuilder sb = new StringBuilder();
String ascString = null;
long asciiInt;
for(int i=0;i<word.length();i++){
sb.append((int)word.charAt(i));
}
ascString = sb.toString();
asciiInt = Long.parseLong(ascString);
return asciiInt;
}
나중에 것은, 내가 그것을 호출 내 삽입에() 메소드가 해시 테이블를 사용하여 차 해싱을 수행하고, 삽입 방법은 다음과 같습니다 그러나
public void insert(Word word){
int start = (int)(hash(word.text)%tableSize);
int key = start;
int attempt=0;
while(hashTable[key]!=null){
attempt++;
key=(start+(int)Math.pow(attempt,2))%tableSize;
}
hashTable[key]=word;
}
, 그것은 java.lang.NumberFormatException
를 throw하면 내가 문자열 변환하려는 문자가 6 자 이상입니다. 누구나 내가 해시 테이블의 핵심 가치를 고안해내는 데 도움이 될 수 있습니까?
감사합니다.
당신이하고있는 일은 말이되지 않습니다. 목적은 무엇입니까? –
NFE에서 나타나는 실제 * 값 *을보십시오. 거기에서 뒤로 작업하십시오. 디버거를 연결하고 코드를 단계별로 실행하면 매우 효과적입니다. – user2864740
HashMap을 사용하지 않는 이유는 무엇입니까? – beny23