java - 为多用户设计购物车的概念问题
问题描述
对于我的任务,我必须创建至少两个类。“购物车”和“文章”。该程序应由多个用户使用,并且应该能够为当前正在购物的活动用户添加、删除和更改项目。另外我想有添加或删除用户的功能,这意味着删除他的购物车。
我已经用基本的 get/set 方法创建了这两个类。我主要在 ShoppingCart 类中工作,通过使用 Hashmap 键作为用户名为每个用户生成一个新的 ShoppingCart,并将一个数组列表(文章)添加到映射键(用户)。在我继续购物之前,系统会要求我让活动用户正确分配商品。
我在使用 hasmap 时遇到了几个问题,例如我无法访问所有文章详细信息,例如特定键(用户)的价格,或者通常我无法访问之前处于活动状态的用户的购物车项目。
因此,我想知道是否有另一种方法可以完成这项任务,或者我是否因为我是新手而犯了基本错误。
这是我目前的编码:
主班
public class Main {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int amount;
String customerName = "";
System.out.println("How many people wanna shop");
amount = Integer.parseInt(sc.nextLine());
for (int i = 0; i < amount; i++) {
System.out.println("User name:");
customerName = sc.nextLine();
new Warenkorb().initialCreation(customerName);
}
}
文章类
class Artikel {
private String itemName;
private int itemPrice;
private int itemTax;
public Artikel(String itemName, int itemPrice, int itemTax) {
this.itemName = itemName;
this.itemPrice = itemPrice;
this.itemTax = itemTax;
}
public String getItemName() {
return itemName;
}
public int getItemPrice() {
return itemPrice;
}
public int getItemTax() {
return itemTax;
}
public void setItemPrice(int itemPrice) {
this.itemPrice = itemPrice;
}
public void setItemQuantity(int itemTax) {
this.itemTax = itemTax;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
}
购物车
我没有在这里复制其他方法,因为我无法打印所有购物车,包括。文章详情。它甚至打印最后一个购物车(用户)。
class Warenkorb {
private String customerName;
private ArrayList<Artikel> shoppingCart = new ArrayList<>();
private Map<String, ArrayList<Artikel>> map = new HashMap<String, ArrayList<Artikel>>();
private Scanner sc = new Scanner(System.in);
public void initialCreation(String customerName) {
String currentUser = customerName;
int amountofitem;
System.out.println("How many Arcticle do you want to create");
amountofitem = Integer.parseInt(sc.nextLine());
for (int i = 0; i < amountofitem; i++) {
String artikelName = "";
int price, qty;
System.out.println(">>>Add Article<<<");
System.out.println("Please enter article name");
artikelName = sc.nextLine().trim().toString();
System.out.println("Please enter price");
price = Integer.parseInt(sc.nextLine());
System.out.println("Please enter how many you would like to add -> quantity");
qty = Integer.parseInt(sc.nextLine());
Artikel newArticle = new Artikel(artikelName, qty, price);
shoppingCart.add(newArticle);
}
map.put(currentUser, shoppingCart);
for (Map.Entry<String, ArrayList<Artikel>> entry : map.entrySet()) {
System.out.println("Shopping Cart of " + entry.getKey());
for (Artikel item : entry.getValue()) {
System.out.println("Artikel" + " " + item.getItemName() + " " + item.getItemPrice() + "€ " + item.getItemTax() + "%.");
}
}
}
提前感谢任何提示/建议。
解决方案
推荐阅读
- javascript - 无法访问在本地节点服务器上创建的 API
- php - Queue::fake 不适用于 Laravel5 代码接收模块
- django - 在 Django 项目中使用 DNA 信息的 CSV 作为数据库的有效方法
- javascript - jQuery 中的 all 选择器 ("*") 是如何工作的?
- r - 编码问题:在R中将字节转换为汉字
- istio - 无法使用“将大型虚拟服务和目标规则拆分为多个资源”
- spring-mvc - 如何使用 Spring Ldap Authentication 和 spring mvc 对用户进行身份验证
- php - 在 php 中使用 setTime 和 DateTimeImmutable 时无法更改分钟
- firebase - 如何使用 firebase firestore 最小化我的颤振应用程序中的 RAM 消耗?
- php - 使用 PHP 备份 SQL Server