如何检查arraylist中是否存在参数

时间:2017-11-19 17:47:44

标签: java arraylist

我正在尝试创建一个方法,允许用户输入2个字符串参数(作者,标题)并让代码检查每个ArrayList条目。如果存在具有给定参数的书籍,则返回书籍,如果该书籍不存在,则应返回null。

我的代码目前看起来像:

public Book checkBook(String title, String author)
{
    for(Book allbooks : books)
    {
        if(allbooks == checkBook(title, author)) {
            return allbooks;
        } else {
            System.out.println("Book does not exist");
        }
    }
    return null;
}

但是,这会导致无限循环。我最初在循环中有'return null'部分,但似乎需要编译循环外的return语句。

我在哪里错了?

1 个答案:

答案 0 :(得分:1)

在这一行中 if(allbooks == checkBook(title,author))你通过一次又一次地调用checkbook方法进行递归,在你的代码中它不会将标题和作者与任何东西进行比较。在Book类中创建标题和作者的getter方法并像这样进行比较,它将起作用。

应该是这样的:

public Book checkBook(String title, String author)
{
   for(Book allbooks : books)
   {
       if(allbooks.getTitle().equals(title) && allbooks.getAuthor().equals(author)) {
           return allbooks;
       }
   }
   return null;
}

代码中不需要 else ,因为它会一直打印错误消息,直到找不到它为止。