java - 单个客户端中的多个产品(arrayList)

标签 java arraylist

我被要求编写一个小型在线销售应用程序。

这在理论上听起来很简单(但对我来说却是 hell )。我应该有一个包含大约 5 种产品的 arrayList,然后让客户购买 1 到 5 种产品并打印销售总额。

public class Product {

    private String name;
    private double price;

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    public String printInfo() {
        return "Product: " + name + " Cost: " + price;
    }
}

然后我有一个客户端类:

public class Cliente {

    private String name;
    private int numPedido;
    ArrayList<Producto> products = new ArrayList<Producto>();

    public void listBuilder() {
        Producto shirt = new Producto("Shirt", 30);
        Producto tshirt = new Producto("T-Shirt", 40);
        Producto sweater = new Producto("Sweater", 50);
    }

    public Cliente(String name, int numPedido) {
        this.name = name;
        this.numPedido = numPedido;
    }

    public Cliente() {
    }

    public String getName() {
        return name;
    }

    public int getNumPedido() {
        return (int) (Math.random() * 100);
    }

    public void addNewClient() {
        name = JOptionPane.showInputDialog("Nombre: ");
    }

    public String printInfo() {
        return "Nombre: " + name;
    }
}

现在我一直在思考如何让客户选择产品并将其附加到他身上。我正在考虑制作 arrayList 的 arrayList 但我确信这会让事情变得复杂。我知道可能有一种更简单的方法来连接它们,但我想不出任何方法。我想到的选项是一种显示从 1 到 3 的数字(对应于每种产品)的方法,当用户选择一个时,它应该返回该商品的价格。

仍然不确定如何以用户可以选择多个产品的方式实现它。

编辑:

我还有一个管理类,如下所示:

public class Admin {

    private Client[] clientList;

    public AdminPedidos() {
        clientList = new Client[2];
    }

    public void AddContact() {

        clienteList[0] = addProduct();
        clienteList[1] = addProduct();

        fillList();
    }

    public Cliente addProduct() {
        String contactoString = JOptionPane.showInputDialog("Are you a new client? Press 1 if yes.");

        if (contactoString.equals("1")) {
            return new Cliente();
        } else {
            return new Cliente(); //just for testing
        }
    }

    private void fillList() {
        for (Client i : clientList) {
            i.addNewClient();
        }
    }

    public void printContact() {
        for (Client i : clientList) {
            System.out.println(i.printInfo());
        }
    }
}

最佳答案

你可以吃一些purchaseProduct方法附于每个 Client .

public void purchaseProduct(Product product) { this.products.add(product); }

然后每个Client您实例化( Client client = new Client(name, id); )可以添加 Products添加 purchaseProduct 到他/她的购物车方法。

我假设您正在使用某种用户输入方法( Scanner )。这样您就可以读取用户的输入 Product他们想要并相应地使用正确的 Product 调用该函数.

listBuilder顺便说一句,函数对我来说不太有意义(编辑后,真的很难理解 Admin 类应该是什么/代表什么)。

编辑:您可能想要创建一个 ArrayList<Product>它将附加到您已有的每个客户端。我感觉您很难决定将实际的 Products 放在哪里。您不应该将它们放入您的 Client 中当然是上课了。
您应该考虑它们将被使用在谁/哪里。可能在 main正确的?因此,只需先在那里实例化它们,然后实例化Client可以选择购买哪一款(按照我之前介绍的方法):

client.purchaseProduct(product);

关于java - 单个客户端中的多个产品(arrayList),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672385/

相关文章:

java - Java编译器在首次访问后省略getfield操作码是否合法?

java - 获取 arrayList 中的特定对象

Java:2个包含不同顺序的相同元素的列表 - 如何删除相同的元素?

java - 检查 arraylist 中的重复条目

java - 如何调用 ArrayList 上的方法

java - Java中的Mysql : Data truncated for column 'AAL' at row 1 error

java - Trie结构中的 "charAt(i) - ' a'"是什么意思?

java - PDFBox 和 BouncycaSTLe 签名无效

java - 将 float 操作按钮转换为 Android 中的 Activity

JavaFX 编译警告 - "uses unchecked or unsafe operations"- 原始数据类型?