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

时间:2016-02-27 16:39:17

标签: java arraylist

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

理论上听起来非常简单(但对我而言,这对我来说太棒了)。我应该拥有一个包含大约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());
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可以为每个purchaseProduct添加一些Client方法。

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

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

我假设你正在使用某种用户输入法(Scanner)。有了它,您可以阅读用户输入的Product,并相应地使用右侧Product调用该函数。

listBuilder函数对我来说没有多大意义(在编辑之后,很难理解Admin类应该/代表什么)。

编辑:你可能想要创建一个ArrayList<Product>,它将附加到你已经拥有的每个客户端。我觉得你很难决定把你的实际Products放在哪里。你应该将它们放在你的Client课程中 你应该考虑使用它们/在哪里使用它们。可能在main对吗?所以首先在那里实例化它们,然后Client可以选择购买哪一个(通过我之前介绍的方法):

client.purchaseProduct(product);