2015-02-08 54 views
-1

我在與多個NullPointerExceptions的一個問題,我得到一個我如果迭代器中的語句,我不能找出問題塊爲什麼迭代NPE在java中

之一:

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語句行。

謝謝。

+1

能否請您提供堆棧跟蹤?不確定NPE,你的代碼肯定會遇到ConcurrentModificationException。 – 2015-02-08 15:13:32

+0

這是你的真實密碼?我問,因爲你正在將數據存儲在'book'引用中,但是你的條件使用'b'引用。正如前面的評論中提到的,你應該發佈stacktrace。要更正或添加更多信息到您的問題,請隨時使用[編輯]選項(它位於您的文章下方)。 – Pshemo 2015-02-08 15:39:35

回答

2

什麼是b?它在哪裏申報/初始化?您的itr.next()分配給book變量,而不是b

你的代碼也許應該是:

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