Для моего задания мне нужно создать как минимум два класса. «ShoppingCart» и «Статья». Программа должна использоваться несколькими пользователями и должна иметь возможность добавлять, удалять и изменять элементы для активного пользователя, который в данный момент совершает покупки. Кроме того, я хотел иметь функцию добавления или удаления пользователя, это означает удаление его корзины покупок.
Я уже создал оба класса с базовыми методами get / set. Я работаю в основном в классе ShoppingCart, чтобы сгенерировать новую ShoppingCart для каждого пользователя, используя ключ Hashmap в качестве имени пользователя, и добавить массив данных (article) к ключу карты (user). Прежде чем я продолжу делать покупки, системы попросят активного пользователя правильно назначить элементы.
Я столкнулся с несколькими проблемами при использовании 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() + "%.");
}
}
}
Заранее благодарим за любые советы / подсказки.