我不理解为什么一个显示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