我必须为 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);
}
}
购物车类
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();
}
}
结果应该将项目放入数组并保留在其中,因此当我在我的 main 方法中调用它时,它将保留在数组中,并且当我调用它时它应该像这样打印
牛奶 $3.00 1 $3.00
鸡蛋 $3.00 1 $3.00
等等......这将通过我的模拟方法打印,但我无法弄清楚如何让物品留在购物车中。