次のコードはNullPointerException
をくれます。問題は次の行にあります。
...
dataMap.put(nextLine[0], nextLine[6]);
奇妙なのは、上記のコードなしでこのコードを実行したことと、nextLine[0]
およびnextLine[6]
の呼び出しが期待どおりに機能することです。つまり、csvファイルの要素が返されます。コードでHashMap
を宣言して初期化します
HashMap<String, String> dataMap = null;
メソッドの初期
String[] nextLine;
int counter=0;
while (counter<40) {
counter++;
System.out.println(counter);
nextLine = reader.readNext();
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + " - " + nextLine[6] +" - " + "etc...");
dataMap.put(nextLine[0], nextLine[6]);
}
return dataMap;
}
HashMap<String, String> dataMap = new HashMap<String,String>();
この時点では、dataMap
変数は初期化されていません。コンパイラに関する警告が表示されるはずです。
データマップはどこで初期化されますか?常にnullです。
明確にするために、変数を宣言してnullに設定します。ただし、それがHashMapであるか同様であるかに関係なく、新しいMapをインスタンス化する必要があります。
例えば.
datamap = new HashMap();
(ジェネリックスなどは脇に置いておきます)
dataMapは宣言されていますが、初期化されていません。それはで初期化することができます
datamap = new HashMap();
さて、その行でアクセスされる3つのオブジェクトがあります。上記のprintln呼び出しが機能したため、nextLine [0]およびnextLine [6]がnullでない場合、dataMapから離れます。 dataMap = new HashMap();を行いましたかsomwehere?