循环NullPointerException中的Java迭代器

循环NullPointerException中的Java迭代器,java,iterator,linked-list,nullpointerexception,Java,Iterator,Linked List,Nullpointerexception,我不明白为什么会用以下代码抛出java.lang.NullPointerException(在这一行:iterator=chapterKeywords[z].iterator();): 迭代器; 对于(int z=0;z

我不明白为什么会用以下代码抛出java.lang.NullPointerException(在这一行:iterator=chapterKeywords[z].iterator();):

迭代器;
对于(int z=0;z
虽然我得到了NullPointerException,但代码完全执行。仅供参考,chapterKeywords是一个LinkedList数组,其中每个数组元素都是一个LinkedList(例如,singleChapterKeywords)

LinkedList[]chapterKeywords=新建LinkedList[numFiles];
LinkedList singleChapterKeywords=新建LinkedList();
尽管该程序似乎运行良好,但我想理解为什么会抛出NullPointerException,因为我想完全消除它。基本上,异常是在for循环的每个迭代开始时抛出的。我修改了代码,在循环中创建了一个新的迭代器,创建了一个迭代器数组,等等,但是它们都产生了相同的结果:NullPointerExceptionatiterator=chapterKeywords[z].iterator()

非常感谢您对消除此异常的任何帮助或见解

因此,以下是我的问题:

当迭代器变量被分配给新的迭代器时,为什么在每次后续迭代中都会抛出NullPointerException?

如何消除此异常?

再一次,蒂亚


更新:我认为LinkedList的填充正确,工作正常,但是,唉,事实并非如此!谢谢你们所有人的帮助

看起来您已经填充了列表,但没有将其中的一部分添加到数组中

这将揭示您的问题:

for (int z = 0; z < chapterKeywords.length; z++) {
   if (chapterKeywords[z] == null) {
      System.out.println("No list found at array index " + z);
      continue;
   }
   iterator = chapterKeywords[z].iterator();
   while (iterator.hasNext()) {
      System.out.println(iterator.next());
   }
}
for(int z=0;z
看起来您已经填充了列表,但没有将其中的一些添加到数组中

这将揭示您的问题:

for (int z = 0; z < chapterKeywords.length; z++) {
   if (chapterKeywords[z] == null) {
      System.out.println("No list found at array index " + z);
      continue;
   }
   iterator = chapterKeywords[z].iterator();
   while (iterator.hasNext()) {
      System.out.println(iterator.next());
   }
}
for(int z=0;z
章节关键字[z]为空。它肯定存在,否则会出现越界错误,但实际上您从未调用过类似chapterKeywords[z]=new String()之类的函数。…

chapterKeywords[z]为空。它肯定存在,或者您将得到一个越界错误,但您实际上从未调用过类似chapterKeywords[z]=new String()之类的函数。…

chapterKeywords[z]对于zThanks的一个或多个值为null。最肯定的是,第二章的关键词[z]都用水管冲洗过了!更糟糕的是,我意外地将上述循环包含到另一个循环中(括号中遗漏了它!),导致迭代次数的平方(numFiles^2而不是numFiles!)…chapterKeywords[z]对于zThanks的一个或多个值为null。最肯定的是,第二章的关键词[z]都用水管冲洗过了!更糟糕的是,我意外地将上面的循环包含到另一个循环中(括号中遗漏了它!),导致迭代次数的平方(numFiles^2而不是numFiles!)…谢谢。事实上,第[z]章的关键词都用软管冲洗过了!谢谢事实上,第[z]章的关键词都用软管冲洗过了!非常感谢!您的代码帮助我理解了问题是由chapterKeywords[z]而不是迭代器造成的。再次感谢您的帮助!非常感谢!您的代码帮助我理解了问题是由chapterKeywords[z]而不是迭代器造成的。再次感谢您的帮助!
for (int z = 0; z < chapterKeywords.length; z++) {
   if (chapterKeywords[z] == null) {
      System.out.println("No list found at array index " + z);
      continue;
   }
   iterator = chapterKeywords[z].iterator();
   while (iterator.hasNext()) {
      System.out.println(iterator.next());
   }
}