我正在尝试创建一种方法,该方法允许用户输入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;
}
而且代码中不需要其他任何内容,因为它将继续打印错误消息,直到找不到为止。