我正在完成家庭作业,但却无法弄清楚我做错了什么。
我正在尝试使用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行上给出了以下错误: &#34;类型ArrayList中的方法add(Book)不适用于参数(String)&#34;
然后我尝试了这个:
Book book1 = new Book("Book title");
bookTitle.add (book1);
这给了我一个&#34;构造函数Book(String)未定义&#34;错误。
请记住,我是Java的菜鸟,所以我可能会做一些非常基本的错误而没有意识到。
非常感谢您的帮助和时间。
答案 0 :(得分:5)
类型ArrayList中的方法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;
答案 1 :(得分:2)
构造函数Book(String)未定义
您必须在类Book中定义一个构造函数,该构造函数将String作为参数。
例如:
class Book{
private String bookName;
public Book(String bookName){
this.bookName=bookName;
}
}
<强>更新强>
在@Josh评论意识到您正在导入导入java.awt.print.Book;
之后。您确定要导入自己的Book
实现,因此请删除该行并导入正确的行!!