2012-10-14 35 views
1

我想創建一個散列表,它將從我的數組中獲取每個字符串並將其分配給唯一的整數值。我的數組從文件中讀取並分配到陣列像這樣:Array into HashTable

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(); 
} 

使用這個數組我寫的方法來創建哈希表是這樣的:

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 
} 

它拋出空指針異常在行: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<>();