Мне нужно создать код для метода addToCart, чтобы добавить элемент в itemList.Я рассмотрел другие проблемы с ShoppingCart здесь, но я не вижу такой, которая увеличивает количество товара и проверяет имя товара, чтобы увидеть, находится ли он в массиве ... Проблема в
1) если элемент с именем, переданным в параметре, уже существует в itemList, обновите это количество элементов, увеличив его на количество, переданное в.
2), если в itemList нет имени элемента и существуетэто пространство для нового элемента, создайте новый объект элемента с заданными именем, количеством и ценой, переданными в качестве параметра, обновите numItems на 1.
3) в обоих случаях должно возвращаться значение true.
4) если элемент с заданным именем не был в массиве и массив не имеет емкости, метод должен вернуть false ...
5) завершить метод dispay, чтобы распечататьимя, общая цена и количество каждого элемента в itemList
Я создал метод getItemIndex и не уверен, нужно ли мне использовать его в этом методе.Поскольку я смотрел на другие методы addtoCart, я думаю, что это другой.
Я пробовал цикл for, и он не вернул то, что я хотел, поэтому я создал новые объекты, но я не могу заставить объекты оставаться содержащимися в массиве объектов.
Класс предметов
public class Items{
private String name;
private double price;
private int quantity;
public Items (String n, double p, int q){
name = n;
price = p;
quantity = q;
}
public double getPrice(){
return price;
}
public String getName(){
return name;
}
public int getQuantity(){
return quantity;
}
public void addQuantity(int amt){
int newQuantity = amt + quantity;
quantity = newQuantity;
}
public String toString(){
return "item name: " + name + ", item quantity: " + quantity +
", total price: " + (price * quantity);
}
}
Класс ShoppingCart
public class ShoppingCart{
//TODO: declare a cart of Items
private Items[] itemList;
//TODO: declare the number of distinct items in the cart
private int numItems = 0;
private static final int INITIAL_CAP = 5; // the initial size of the cart
private static final int GROW_BY=3;
// ---------------------------------------------------------
// Creates an empty shopping cart with a capacity for 5 items.
// ---------------------------------------------------------
public ShoppingCart(){
itemList = new Items[INITIAL_CAP];
numItems = 0;
}
public double getTotalPrice(){
double totalPrice = 0;
numItems = 0;
for(int i = 0; i<itemList.length; i++){
if(itemList[i]!= null){
totalPrice = totalPrice + (itemList[i].getQuantity()*itemList[i].getPrice());
numItems++;
}
}
return totalPrice;
}
private int getItemIndex(String nameOfItem){
for(int i = 0; i < itemList.length; i++){
if(itemList[i].getName().equals(nameOfItem))
return i;
}
return -1;
}
public boolean addToCart(String name, double price, int quantity){
Items n = new Items (name, price, quantity);
if(numItems == INITIAL_CAP)
return false;
itemList[numItems]=n;
if(itemList[numItems].getName().equals(name)){
quantity = quantity + 1;
return true;
}
else if (!itemList[numItems].getName().equals(name)){
numItems = numItems + 1;
return true;
}
return false;
}
public String display(){
for(int i = 0; i<numItems; i++){
System.out.println(itemList[i].toString());
}
return toString();
}
}
Результат должен поместить элементы в массив и остаться там, поэтому, когда я вызываю его в моемосновной метод, он останется в массиве и должен печататься так, когда я назову его
молоко $ 3,00 1 $ 3,00
яйца $ 3,00 1 $ 3,00
и т. д ... Это будет напечатано bмой метод симуляции, но я не могу понять, как заставить предметы оставаться в корзине.