java 中的迭代器 NPE

Iterator NPE in java

我遇到了多个 NullPointerExceptions 的问题,我在迭代器中的 if 语句中遇到了一个,但我不知道为什么

问题块之一:

public int removeAllBooks(String author, String title){
Iterator<Book> itr=library.iterator();
int i=0;
while(itr.hasNext()){
        Book book=itr.next();
        if(b.getAuthor().equals(author)&&(b.getTitle().equals(title))){
            itr.remove();
            i++;
        }
        if(i>0){
            return i;
        }
     }
return 0;  

}

出于某种原因,NPE 错误指向我的 if 语句行。

谢谢。

什么是b? declared/initialized 在哪里?您的 itr.next() 分配给了 book 变量,而不是 b

您的代码可能应该是:

    Book book=itr.next();
    if(book.getAuthor().equals(author)&&(book.getTitle().equals(title))){