当我调用这个方法时,为什么我的arraylist超出界限(索引3,大小3)

时间:2014-09-25 17:05:57

标签: java arraylist

我试图通过使用这本书的名字找到书中的一本书。 当我尝试添加一本不在书籍arraylist中的书时,它给了我arrayoutofbounds异常索引: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);

3 个答案:

答案 0 :(得分:1)

您不必在此处使用索引,只需遍历您的arraylist即可。

我反转等于因为不知道你的模型中书的标题是否是强制性的。

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

答案 1 :(得分:0)

尝试for循环:

   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;
    }

答案 2 :(得分:0)

好吧,如果你找不到这本书,那么你的索引就会在列表的末尾运行。您可以像sanghas26建议的那样执行for循环(这是最好的解决方案),或者您可以在循环开始时添加一个检查以查看i是否已经走得太远。