1

我正在做家庭作业,但无法弄清楚我做错了什么。

我正在尝试使用 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 的菜鸟,所以我可能会犯一些非常基本的错误而没有意识到这一点。

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

4

2 回答 2

5

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

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

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

如果您仍想使用Booknot 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;

于 2013-09-05T01:52:20.963 回答
2

构造函数 Book(String) 未定义

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

例如:

class Book{

private String bookName;

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

}

更新

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

于 2013-09-05T01:52:37.130 回答