使用 ArrayList 存储<Book>书名



我正在做家庭作业,还没能弄清楚我做错了什么。

我正在尝试使用ArrayList创建一个图书标题列表

这是我到目前为止的代码:

import java.awt.print.Book;
import java.util.ArrayList;
public class Books {
    public static void main (String[] args){
        ArrayList<Book> bookTitle = new ArrayList<Book>();

        bookTitle.add ("Book title 1");
        bookTitle.add ("Book title 2");
        bookTitle.add ("Book title 3");
        System.out.println("Size of Book list: " + bookTitle.size());
    }
}

此代码在三个bookTitle.add行中出现以下错误:"ArrayList类型中的方法add(Book)不适用于参数(String)"

所以我尝试了这个:

Book book1 = new Book("Book title");
        bookTitle.add (book1);

这给了我一个"构造函数Book(String)未定义"的错误。

请记住,我是Java的新手,所以我可能正在做一些非常基本的错误,但没有意识到

我非常感谢你的帮助和时间。

类型ArrayList中的Method add(Book)不适用于参数(String)

这是因为,正如您所看到的,泛型类型在您的ArrayList<Book> bookTitle = new ArrayList<Book>();中是Book,但您在bookTitle中添加了String值,bookTitle.add ("Book title 1");

尝试ArrayList<String> bookTitle = new ArrayList<String>();

如果您仍然想使用Book而不是String,那么创建一个Book类,例如:

public class Book{
private String bookName;
public Book(){}
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
}

然后在你的主要方法中尝试:

Book book1 = new Book();
book1.setBookName("Book title 1");
ArrayList<Book> bookTitle = new ArrayList<Book>();
bookTitle.add (book1);
 for(Book b :bookTitle){
            System.out.println(b.getBookName());
        }

注意:移除import java.awt.print.Book;

构造函数Book(String)未定义

您必须在类Book中定义一个构造函数,该构造函数将String作为参数。

例如:

class Book{
private String bookName;
public Book(String bookName){
 this.bookName=bookName;
}
}

更新

在@Josh评论意识到您正在导入导入java.awt.print.Book;之后。您肯定要导入自己的Book实现,所以删除该行并导入正确的行!!

最新更新