سؤال

الكود التالي هو إعطائي 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 لم يتم تهيئة المتغير في هذه المرحلة. يجب أن تحصل على تحذير مترجم حول ذلك.

نصائح أخرى

أين يتم تهيئة DataMap؟ انها دائما لاغية.

لتوضيح، أنت تعلن المتغير وتعيينها إلى NULL. لكنك تحتاج إلى إنشاء نسخة جديدة، سواء كان حاشابا أو مشابها.

على سبيل المثال

datamap = new HashMap();

(ترك جانبا الأجيال وما إلى ذلك)

تم الإعلان عن Datamap ولكن لم تتم تهيئته. يمكن تهيئةها مع

Datamap = hashmap جديد ()؛

حسنا، هناك ثلاثة كائنات تم الوصول إليها على هذا الخط. إذا لم تكن NEXTLINE [0] و NEXTLINE [6] لاغية، لأن مكالمة طباعة الطباعة أعلاه تعمل، ثم يترك DataMap. هل قمت ب Datamap = Hashmap الجديد ()؛ Somwehere؟

أم، ما بالضبط فعل تتوقع عند القيام بذلك؟

HashMap<String, String> dataMap = null;
...
dataMap.put(...)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top