当前位置: 首页 > 知识库问答 >
问题:

将书籍添加到ArrayList库存类

令狐献
2023-03-14

所以,我有一个名为InventoryList的类,它有一个Arraylist。我必须制定方法来添加新书、删除一本书、获取所有书籍的价格等。我记下了一些,但我不知道如何添加一本带有ISBN、标题、年份、作者和价格的书?

这是Inventory类,我在其中存储ISBN、标题、年份、作者和价格。

package bookStore;

public class Inventory {

private int isbn;
private String title;
private int year;
private String author;
private double price;

public Inventory() {
    this.isbn = 0;
    this.title = "";
    this.year = 0;
    this.author = "";
    this.price = 0.0;
}

public Inventory(int isbn, String title, int year, String author, double price) {
    this.isbn = isbn;
    this.title = title;
    this.year = year;
    this.author = author;
    this.price = price;
}

//Getters
public int getIsbn() {
    return this.isbn;
}
public String getTitle() {
    return this.title;
}
public int getYear() {
    return this.year;
}
public double getPrice() {
    return this.price;
}
public String getAuthor() {
    return this.author;
}

//Setters
public void setIsbn(int isbn) {
    this.isbn = isbn;
}
public void setTitle(String title) {
    this.title = title;
}
public void setYear(int year) {
    this.year = year;
}
public void setAuthor(String author) {
    this.author = author;
}
public void setPrice(double price) {
    this.price = price;
}

public String toString() {
    return ("ISBN: " + isbn + "\t" 
            + "Title: " + title + "\t"
            + "Year: " + year + "\t"
            + "Author: " + author + "\t"
            + "Price: " + price);
 }
}

这是带有ArrayList及其方法的已编辑的InventoryList类。

package bookStore;

import java.util.ArrayList;

public class InventoryList {


private int isbn;
private String title;
private int year;
private String author;
private double price;
Inventory books = new Inventory(isbn, title, year, author, price);
ArrayList<Inventory>list = new ArrayList<Inventory>();

//adding new books
public void addBook(int isbn, String title, int year, String author, double price) {
        list.add(books);

        books.setIsbn(isbn);
        books.setTitle(title);
        books.setYear(year);
        books.setAuthor(author);
        books.setPrice(price);  
}

//delete a book using its ISBN number
//given by professor
public void delete(int isbn) {
    int index = 0;
    for(Inventory listBook : list) {
        if(books.getIsbn() == isbn) {
            index = list.indexOf(listBook);
            delete(index);
        } 
    }
}

//print out books of year chosen by user
public void bookYear(int year) {
    for(Inventory listBook : list) {
        if(books.getYear() == year) {
            list.indexOf(listBook);
        }
    }
}

//print out the sum of all books price
public int priceAll(int price) {
    int price1 = 0;
    for(Inventory listBook : list) {
        if(books.getPrice() == price) {
            list.indexOf(listBook);
            price1 += price;
        }
    }
    return price1;
}

//print out all books
public void listBooks() {
    for(Inventory listBook : list) {
        System.out.println(books.getIsbn() + "\t"
                    + books.getTitle() + "\t"
                    + books.getYear() + "\t"
                    + books.getAuthor() + "\t"
                    + books.getPrice());
        //return listBook;
    }
    //return books.getIsbn();
 }
}

这部分已经涵盖了吗?加上书号、书名、年份、作者和价格。

public void addBook(Inventory book) {
    for(Inventory listBook : list) {
        list.add(book);
    }
}

共有2个答案

林弘文
2023-03-14

不,它不包括你的目标。创建库存列表时,列表为空,因此循环中的代码不会运行。您的addBook方法是否要将一本书添加到列表中?它只需删除循环并将其更改为列表。使用此构造函数添加(book)和(book)参数构造库存(int isbn,String title,int year,String author,double price)

符鸣
2023-03-14
public final class Book {
    private final int isbn;
    private final String title;
    private final int year;
    private final String author;
    private final double price;

    // getters
}

public final class BookStore {
    private final Map<Integer, Book> books = new HashMap<>();

    public void addBook(Book book) {
        if(book != null)
            books.put(book.getIsbn(), book);
    }

    public Book getBook(int isbn) {
        return books.get(isbn);
    }

    public Book removeBook(int isbn) {
        return books.remove(isbn);
    }

    public double getAllBooksPrice() {
        return books.values().stream().map(Book::getPrice()).sum();
    }
}
 类似资料:
  • 问题内容: 我有一个ArrayList,它向其中动态添加了一些对象,并且有一个JButton。运行我的程序时ArrayList为空,并且JButton设置为setEnabled(false)。我想在ArrayList中有2个或更多元素时启用我的按钮,如果ArrayList有一项或为空则再次禁用它。我该如何实现? 问题答案: 没有任何种类的通知机制。 我建议您编写自己的实现,该实现将委托给私有的实现

  • 我有一个很愚蠢的问题。当我们向ArrayList添加一个int值时,它会创建该int值的新整数对象吗?例如: 在上面的代码中,“a”是一个值为1的原始类型,“list”是一个包含整数类型元素的数组列表。那么在“列表”中添加“a”时,“列表”如何将“a”视为整数?

  • 问题内容: 我的文件带有证书链-certificate.cer: 我需要将此证书链添加到密钥库。 我做的事: 结果,我在密钥库中只有1个证书。 但是应该有3. 什么地方可能出问题? 解决方案: CA向我发送了PKCS#7格式的证书。 我将它们存储在certificate.p7b文件中,然后通过以下命令将它们成功添加到密钥库中: 问题答案: 从keytool管理员中-如果以PKCS#7格式输入,它将

  • 但是,后来当我试图将整数添加到正确的“内部”数组列表中时,我无法将整数添加到ArrayList类型的位置中。我还得到一个索引超出界限的错误。 解决这个问题的方法是将整数强制转换为ArrayList类型,但这意味着我将在内部数组列表中添加一个数组列表,这不是我想要的。我想在正确的“内部”ArrayList中添加一个int。

  • 问题内容: 是否可以将值添加到ArrayList而不是使用HashMap 就像是: 现在收到错误: 谢谢 问题答案: JSTL并非旨在执行此类操作。这确实属于业务逻辑,该业务逻辑将(间接)由Servlet类控制。 创建一个如下的servlet: 这个地图上的。 现在,在其中创建一个JSP文件(将其放置以防止直接访问): 不需要,因为servlet已经设置了它。 现在通过调用servlet + JS

  • 我的任务是实现一个蛮力算法来输出一些n的整数[1,2,…, n]的所有排列。但是,我似乎在将ArrayList对象添加到HashSet时遇到了一些问题: 我发现对“nextPer的连续调用确实找到了所有排列,但是我不明白当我将排列添加到HashSet“allPer的排列”时会发生什么。我在n=3的情况下运行时得到的输出是这样的: [[3, 2, 1, 1, 2, 1, 1, 3, 1, 2], [