我不理解爲什麼一個顯示java.lang.NullPointerException是用下面的代碼拋出(在此行:迭代= chapterKeywords [Z] .iterator();) :爪哇迭代在for循環的NullPointerException
Iterator<String> iterator;
for (int z = 0; z < chapterKeywords.length; z++) {
try {
iterator = chapterKeywords[z].iterator();
//exception thrown here after first iteration (i.e., when z = 1) and subsequent ones
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (Exception e) {
;
}
}
雖然我得到NullPointerException,代碼完全執行。僅供參考,chapterKeywords是LinkedList數組,其中每個數組元素是一個LinkedList(例如singleChapterKeywords)。
LinkedList<String>[] chapterKeywords = new LinkedList[numFiles];
LinkedList<String> singleChapterKeywords = new LinkedList<String>();
雖然該方案看上去一切正常,我想明白爲什麼拋出NullPointerException異常,因爲我想完全消除。基本上,for循環中每次迭代開始時都會拋出異常。我已經修改了代碼以在循環內部創建一個新的迭代器,創建一個迭代器數組等,但它們都產生相同的結果:NullPointerException at iterator = chapterKeywords [z] .iterator();。
任何幫助或瞭解消除此異常非常感謝。
所以,這裏是我的問題:
爲什麼會出現在隨後每次迭代上拋出一個NullPointerException異常時,迭代變量被分配到一個新的迭代器?
如何消除此異常?
再次,TIA!
更新:我認爲 LinkedList的的爲正確填充和工作得很好,但是,唉,這是不是這樣的!謝謝大家的不可估量的幫助!
chapterKey [z]對於一個或多個z值 – Alfabravo 2012-08-08 20:18:39
謝謝。當然,章節關鍵字[z]已經全部結束了! – Luis 2012-08-08 21:55:53
更糟糕的是,我不小心把上面的循環放到了另一個循環中(錯過了一個括號!),導致迭代次數的平方(numFiles^2而不是numFiles!)... – Luis 2012-08-09 00:15:19