在java中将一本书的多个值添加到ArrayList中

在java中将一本书的多个值添加到ArrayList中,java,methods,arraylist,Java,Methods,Arraylist,我对如何将多个值添加到数组列表中有点困惑 我试图做的是将1个对象的多个值添加到数组列表中 例如: 我有一个名为books的数组列表,我正在尝试添加一本书,其中包含书名、作者、出版年份等等 这里是我尝试过的地方,但我不确定它是否正确,或者是否有更简单的方法 public class Book { public static ArrayList<Book> Books = new ArrayList<>(); public int isbn; pu

我对如何将多个值添加到数组列表中有点困惑

我试图做的是将1个对象的多个值添加到数组列表中

例如:

我有一个名为books的数组列表,我正在尝试添加一本书,其中包含书名、作者、出版年份等等

这里是我尝试过的地方,但我不确定它是否正确,或者是否有更简单的方法

public class Book {

    public static ArrayList<Book> Books = new ArrayList<>();

    public int isbn;
    public int yearPublished;
    public String title;
    public String author;
    public String price;
    public int noOfCopies;

  Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
  Book b2 = new Book(4321, 1994, "Book2", "bob.bob", "£12.00", 3);



    public Book(int ISBN, int year, String ttle, String auth, String pri, int copies) {

        this.isbn = ISBN;
        this.yearPublished = year;
        this.title = ttle;
        this.author = auth;
        this.price = pri;
        this.noOfCopies = copies;

        Books.add(this);
    }
}
公共课堂教材{
public static ArrayList Books=new ArrayList();
公共国际标准书号;
公开出版的出版物;
公共字符串标题;
公共字符串作者;
公共字符串价格;
公共国际禁区;
书b1=新书(12341991,“书1”,“马克.马克”,“11.00英镑”,5);
图书b2=新书(43211994年,“图书2”,“鲍勃.鲍勃”,“12.00英镑”,3);
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份){
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
书。加上(这个);
}
}

是这样吗?谁能帮我一下吗

您现在看到的任何错误的原因都是实例变量

Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
对于您创建的每个
Book
实例,它将创建一个
Book
实例,该实例将创建一个
Book
实例,该实例将创建一个
Book
实例,非常讨厌,最终导致
堆栈溢出错误


删除那些
b1
b2
并从驱动程序的类外创建它们。

我建议不要在book类内创建books对象(一本书不包含书籍。这没有意义)。我建议把书搬到自己的班级去。



这样做,您就有了:
书籍=新书
Book book1=新书()
Book book2=新书()
新增(第1册)
新增(第2册)


公共静态ArrayList Books=new ArrayList()不能在Book类中。相反,您应该创建某种容器类,例如
公共类BookShelf
,它将成为这个图书数组中的一种图书

另一件坏事是,您正在POJO类中创建应用程序逻辑。像
bookb1=newbook…
这样的语句应该在运行时类的方法中,而不是在POJO中。POJO应该只包含具有getter/setter的私有成员,并最终包含toString方法


此外,避免创建公共成员。它们应该是getter和setter的私有代码。

您必须安排代码:

// Class Definition
public class Book {
    // Member Variables
    public int isbn;
    public int yearPublished;
    public String title;
    public String author;
    public String price;
    public int noOfCopies;

    // Constructor
    public Book(int ISBN, int year, String ttle, String auth, String pri, int copies) {

        this.isbn = ISBN;
        this.yearPublished = year;
        this.title = ttle;
        this.author = auth;
        this.price = pri;
        this.noOfCopies = copies;
    }

    // Create a List of Books
    public static List<Book> getBooks() {
        Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
        Book b2 = new Book(4321, 1994, "Book2", "bob.bob", "£12.00", 3);
        List<Book> books = new ArrayList<Book>();
        books.add(b1);
        books.add(b2);
        return books;
    }
}
//类定义
公共课堂用书{
//成员变量
公共国际标准书号;
公开出版的出版物;
公共字符串标题;
公共字符串作者;
公共字符串价格;
公共国际禁区;
//建造师
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份){
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
}
//创建一个图书列表
公共静态列表getBooks(){
书b1=新书(12341991,“书1”,“马克.马克”,“11.00英镑”,5);
图书b2=新书(43211994年,“图书2”,“鲍勃.鲍勃”,“12.00英镑”,3);
List books=new ArrayList();
增加(b1);
新增(b2);
还书;
}
}
然后,您可以通过调用getBooks()函数来获取示例书:

List<Book> exampleBooks = Book.getBooks();
List exampleBooks=Book.getBooks();

图书列表应在与
图书
不同的类中进行管理。例如,您可能有

public class Library
{
    private ArrayList<Book> books = new ArrayList<Book>();

    public Library()
    {
        Book b1 = new Book(...);
        Book b2 = new Book(...);

        books.add(b1);
        books.add(b2);
    }
}

public class Book
{
    private int isbn;
    private int yearPublished;
    private String title;
    private String author;
    private String price;
    private int noOfCopies;

    public Book(int ISBN, int year, String ttle, String auth, String pri, int copies)
    {
        this.isbn = ISBN;
        this.yearPublished = year;
        this.title = ttle;
        this.author = auth;
        this.price = pri;
        this.noOfCopies = copies;
    }

    // getter and setter for each field
}
公共类库
{
private ArrayList books=new ArrayList();
公共图书馆()
{
书b1=新书(…);
图书b2=新书(…);
增加(b1);
新增(b2);
}
}
公共课堂用书
{
私人国际标准书号;
出版的私人刊物;
私有字符串标题;
私有字符串作者;
私人字符串价格;
私家公寓;
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份)
{
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
}
//每个字段的getter和setter
}

您是否收到StackOverflower错误?您应该遵守命名约定。使用
Books.add(这个)
,我们的印象是,
add
是类
Books
的一个静态方法。删除b1和B2的定义谢谢,这很有帮助!:)谢谢你的帮助!这和上面的答案有帮助:)