首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串的ArrayList和另一个数组列表

字符串的ArrayList和另一个数组列表
EN

Stack Overflow用户
提问于 2020-11-21 16:32:38
回答 2查看 112关注 0票数 1

因此,我正在编制一个管理书店的程序,这里是一个示例,说明了应该如何处理以下主要内容:

代码语言:javascript
复制
        bookStore bookStore = new bookStore("Lelo");
        book l1 = new TecnicalBook("H. Schildt", "\"Java: The Complete Reference\"", 80, "Computer Science- Java");
        bookStore.addBook(l1);
        book l2= new AdventureBook("A. Christie", "\"The Man in the Brown Suit\"", 75, 14);
        bookStore.addBook(l2);
                
        
        Client c1 = new Premium("B. Antunes", "antunes@books.com");
        bookStore.addClient(c1);
        Client c2 = new Frequent("A. Oliveira", "oliveira@books.com");
        bookStore.addClient(c2);
        System.out.println("Initial stock:");
        bookStore.showBooks();
        bookStore.sale(l1, c1);
        System.out.println("Stock after selling:");
        bookStore.showBooks();
        System.out.println("Sales Volume:"+bookStore.SalesVolume);        
        bookStore.showClientsBooks(c1);

应显示这一结果:

代码语言:javascript
复制
Initial stock:
Author:H. Schildt   Title:"Java: The Complete Reference"   Base Price:80.0
Author:A. Christie   Title:"The Man in the Brown Suit"   Base Price:75.0
B. Antunes bought "Java: The Complete Reference", Tecnical Book of Computer Science- Java, for 72.0
Stock after selling:
Author:A. Christie   Title:"The Man in the Brown Suit"   Base Price:75.0
Sales Volume:72.0
B. Antunes bought: "UML Distilled". "The Man in the Brown Suit".

唯一不能做的部分是最后一行,显示每个客户已经购买的产品,我正在考虑创建一个包含一个带有客户端名称的字符串和一个图书类的数组列表的类,然后为每个客户端提供一个该类的数组列表,但是我不确定如何使这个类更好,谢谢。

编辑:我有这样的类:类图书类,技术类,扩展类,冒险类,书籍类

类客户端类常规扩展客户端类频繁扩展客户端级溢价扩展客户端

我有一个书店类,其中有一个图书和客户端对象的数组列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-21 16:53:10

可以将图书列表添加到客户端类,以跟踪销售情况:

代码语言:javascript
复制
class Client {

    ...

    private List<Book> books;

    ClientBooks(Client client) {
        ...

        this.books = new ArrayList<>();
    }

    public void addBook(Book book) {
        this.books.add(book);
    }

    public void printBooks() {
        for (Book book : this.books) {
            System.out.println(book);
        }
    }
}

销售一本书可以这样实现:

代码语言:javascript
复制
List<Client> clients = ...

String buyer = ...
Book book = ...

for(Client client : clients) {
    if (client.getName().equals(buyer)) {
        client.addBook(book);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2020-11-21 16:49:50

在每个类中重写toString是很重要的。然后,当您打印该类的实例时,字符串将打印而不是一些奇怪的值。

此方法还允许您一次添加所有书籍,或者如果您选择单独的书籍。

这门课还没有经过测试,但它应该给你一个如何进行的想法。

代码语言:javascript
复制
class Client {
  String name;
  private List<Book> clientBooks = new ArrayList<>();
  public Client(String name) {
     this.name = name;
  }

  public addBooks(List<Book> books) {
      clientBooks.addAll(books);
  }

  public void addBook(Book bk) {
      clientBooks.add(bk);
  }

  public String toString() {
     StringBuilder sb = new StringBuilder(name).append(":");
     // add either the entire toString for book here or just selected
     // items like the title.  It's up to you.
     for (Book b :clientBooks) {
        sb.append(b.toString()).append(", ");
     }
     
     return sb.toString().substring(0,sb.length()-2);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64945437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档