我正在尝试创建一种方法,该方法允许用户输入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语句才能进行编译。

我在哪里错了?

最佳答案

在这一行if(allbooks == checkBook(title,author))中,您要通过一次又一次地调用checkbook方法来进行递归,在您的代码中它将不会将标题和作者与任何内容进行比较。在Book类中创建title和author的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;
}


而且代码中不需要其他任何内容,因为它将继续打印错误消息,直到找不到为止。

09-28 03:23