2014-09-25 40 views
-1

我試圖通過使用書的名稱在書籍的數組列表中找到一本書。 當我嘗試添加不在書籍數組列表中的書時,它給了我數組限制範圍例外索引:3,size:3 ....我該如何解決這個問題?爲什麼我的數組列表出現越界(索引3,大小3)當我將這個方法稱爲

public Book findBookByName(String bookNameToFind) 
    { 
    boolean found = false; 
    String bookName; 
    int index = 0; 

    while(!found) 
    { 
     bookName = bookLibrary.get(index).getTitle(); 

     if(bookName.equals(bookNameToFind)) 
     { 
      found = true; 
     } 
     else 
     { 
      index++; 
     } 
    } 
    return bookLibrary.get(index); 
+9

如果大小爲3最大索引爲2 – 2014-09-25 17:06:56

+0

大聲笑。我認爲你應該閱讀一本編程書籍的介紹。你會問很多關於SO的問題,否則 – taylorcressy 2014-09-25 17:08:17

+0

你對指數的高低沒有限制。你永遠不應該試圖以一個索引大小的ArrayList或更大。這絕對是你應該使用'for'循環,而不是'while'的情況。 – Coda17 2014-09-25 17:09:28

回答

1

你不必在這裏使用索引,只需遍歷你的數組列表。

我倒是等於,因爲不知道模型中書的標題是否是強制性的。

public Book findBookByName(String bookNameToFind) { 
    for (Book book : bookLibrary) { 
     if (bookNameToFind.equals(book.getTitle())) 
      return book; 
    } 
    return null; 
} 
0

嘗試一個循環:

public Book findBookByName(String bookNameToFind) 
    {  
     for (int i = 0; i < bookLibrary.Count(); i++) { 
      if (bookLibrary.get(i).getTitle().equals(bookNameToFind)) 
       return bookLibrary.get(i); 
     } 

    return null; 
    } 
0

好吧,如果你沒有找到這本書,那麼你的指數是要跑出列表的末尾。你可以像sanghas26那樣做for循環(這是最好的解決方案),或者你可以在循環的開頭添加一個檢查來查看i是否已經太過分了。

相關問題