質問

次のコードは、私に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のか似ているかどうか、新しい地図をインスタンス化する必要があります。

例えばます。

datamap = new HashMap();

(ジェネリックなど脇残す。)

DATAMAPが宣言されていますが、初期化されていません。これは、

で初期化することができます

データマップ=新しいHashMapの();

まあ、その行にアクセスする3つのオブジェクトがあります。 printlnの呼び出しが上記働いたのでnextLine [0]とnextLineは、[6]、nullでない場合は、データマップを残しています。あなたは)(データマップ=新しいHashMapを行いました。 somwehere?

これを行うと、

うーん、まさに には、

?期待しています
HashMap<String, String> dataMap = null;
...
dataMap.put(...)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top