我正在尝试创建一个方法,允许用户输入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语句。
我在哪里错了?
答案 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 ,因为它会一直打印错误消息,直到找不到它为止。