单个客户端中的多个产品(arrayList)
我被要求编写一个小的在线销售应用程序。单个客户端中的多个产品(arrayList)
理论上听起来很简单(但对我来说这是一个地狱)。我只是应该有一个arrayList约5个产品,然后让客户购买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());
}
}
}
您可以连接到每个Client
一些purchaseProduct
方法。
public void purchaseProduct(Product product) { this.products.add(product); }
然后每个Client
你实例化(Client client = new Client(name, id);
)可以添加Products
他/她的车与purchaseProduct
方法。
我假设你正在使用某种用户输入法(Scanner
)。有了这个,你可以读取用户输入的Product
他们想要的,并相应地调用右边的Product
功能。
listBuilder
函数对我来说不是很合理btw(并且在编辑之后,很难理解类应该代表什么类型)。
编辑:您可能想创建一个ArrayList<Product>
,它将附加到您已拥有的每个客户端。我觉得你难以决定把你的实际Products
放在哪里。你应该不是把它们放在你的Client
班里。
你应该考虑他们将要使用的人物/地点。大概在main
对不对?所以只要实例他们那里,然后再在Client
可以选择购买哪一个(通过我之前介绍的方法):
client.purchaseProduct(product);
是的,我正在使用JOptionPane来做到这一点。 我应该在哪里创建产品arrayList? – LeinadDC
我不明白你在哪里做的,你可以添加你的'main'吗?或者以任何方式了解您希望如何使用这些类? – Idos
哦,那个“listBuilder”应该是产品的arrayList。我现在没有任何东西,只是我刚发布的Admin类测试正确地打印客户端名称。我正在考虑在该Admin类中创建产品的arrayList。不知道这是否是一个正确的做法。还是应该在产品类中完成? 编辑:管理类应该是某种控制类,其中的一切都完成了,添加客户端和他们的车应该在那里工作。正如在主要我只允许执行程序本身。 – LeinadDC
一是认为正常和分析,认为其中应listBuilder的方法以及如何访问使用ArrayList的 – Vinod