1

我想创建哈希表,它将从我的数组中获取每个字符串并将其分配给唯一的整数值。我的数组是从文件中读取并分配给这样的数组:

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
}

它在以下行引发 NullPointer 异常: wordsHashTable.put(currentWord, i+1); 我搞砸的任何想法?

4

3 回答 3

3

您必须wordsHashTable使用该类的实例初始化您的:

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

但是,请注意Hashtable该类已过时;你应该java.util.HashMap改用。

于 2012-10-14T10:00:25.227 回答
1

初始化你的哈希表。你忘了初始化它。

 private Hashtable <String,Integer> wordsHashTable = new Hashtable<>();
于 2012-10-14T10:02:32.490 回答
0

您没有初始化“哈希表”。

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

会修复它。

但是,我建议您转向更现代的东西,例如HashMap

于 2012-10-14T10:01:25.163 回答