我与一个关于书架程序的问题混淆了。
我必须创建两个名为Book和BookShelf的类

我或多或少已经完成了Book类,其中包含了这些变量(id,author和title),以及(get,set,toString和constructors方法)

但是对于BookShelf课,我不知道自己所做的是否正确

这是我在BookShelf课上应该做的


创建一个addBook方法,它将书本对象作为输入并将该对象添加到书架中
returnBooks方法,无需参数/参数,只需按顺序返回书籍的数组列表
returnAuthorBooks,以作者作为输入,并返回作者的书籍数组列表


这是我完成的代码

import java.util.ArrayList;
import java.util.Collections;

public class BookShelf {
    ArrayList<Book> listOfBooks = new ArrayList<Book>();

    public void addBook(Book getTitle){
        listOfBooks.add(getTitle);
    }

    public ArrayList<Book> returnBooks(){

        ArrayList myBook = new ArrayList();
        Collections.sort(myBook);
        return myBook;
    }

    public ArrayList<Book> returnAuthor(Book author){

        for (Book books : listOfBooks){
            if (author.getAuthor() == books.getTitle()){
                return listOfBooks;
            }
        }
        return null;
    }
}


我想澄清一下这里是否有错误,因为某种原因,我觉得自己做错了什么

最佳答案

您的returnBooks方法返回一个空的列表。你应该改变

ArrayList myBook = new ArrayList();




ArrayList<Book> myBook = new ArrayList(listOfBooks);


为了返回完整的排序列表。

您的returnAuthor方法有几个问题:


它应该以作者作为输入(我不知道它是否应该是String或是否存在Author类)。
您将书的作者与==而不是equals进行比较(请参阅this问题)。
如果找到与您所要寻找的作者的书,则返回整个书清单。您只应退还该作者的书。

10-07 16:01