2012-10-14 3 views
1

내 배열에서 각 문자열을 가져 와서 고유 한 정수 값에 할당하는 해시 테이블을 만들고 싶습니다. 내 배열이 같은 파일에서 읽기 및 배열에 할당됩니다HashTable에 배열

String currentWord; 
private Hashtable <String,Integer> wordsHashTable; 
LinesReader lr = new LinesReader(); 
int i; 
String[] listOfWords; 

public boolean insertValues() throws Exception{ 
    for (i=0; i<lr.getNumberOfLines();i++){ 
     lr.readFile(); 
     listOfWords = lr.returnsWordList(); 
     currentWord = listOfWords[i]; 
     wordsHashTable.put(currentWord, i+1); 
    } 
    return wordsHashTable.isEmpty(); //testing purposes only 
} 

그것은 라인에 NullPointer 예외가 발생합니다 :

public void readFile() throws Exception{ 

    FileInputStream in = new FileInputStream("words.txt"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

    String strLine; 
    wordsList = new String[getNumberOfLines()]; 

    for (int j = 0; j < wordsList.length; j++){ 
    wordsList[j] = br.readLine(); 

    } 
    in.close(); 
} 

이 같은 해시 테이블을 생성하는 방법을 썼다이 배열을 사용하여 wordsHashTable.put (currentWord, i + 1); 내가 엉망인 아이디어가 있습니까?

답변

3

당신은 클래스의 인스턴스로 wordsHashTable를 초기화해야합니다

private Hashtable <String,Integer> wordsHashTable = new Hashtable<>(); 

그러나에서, Hashtable 클래스가 사용되지 않습니다 점에 유의한다; 대신 java.util.HashMap을 사용해야합니다.

+0

감사! 나는 그것이 어리석은 실수 였고 힌트를 주신 것에 대해 감사 드린다. (우리 강사는 우리의 과제에서 해시 테이블을 사용해야한다고 말했지만, 미래의 참고 사항을 알 것이다) – Shepard

0

당신은`Hashtable '을 초기화하지 않았습니다.

private Hashtable <String,Integer> wordsHashTable = new Hashtable <String,Integer>(); 

으로 수정됩니다.

그러나, 나는 당신의 해시 테이블을 초기화 HashMap

1

같은 더 현대적인 무언가로 이동을 추천 할 것입니다. 초기화하는 것을 잊었습니다.

private Hashtable <String,Integer> wordsHashTable = new Hashtable<>();