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

`Hashtable'を初期化しませんでした。

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

それを修正します。

ただし、HashMapのようなより現代的なものに移行することをお勧めします

于 2012-10-14T10:01:25.163 に答える