-2
我試圖實現使用兩個java類的購物車過程。一個是CartItem
,另一個是ShoppingCart
,它包含購物車的所有過程。購物車沒有更新數量從第二次嘗試
這裏是我的CartItem
:
public class CartItem implements Serializable {
private int pro_id;
private int qnty;
public CartItem(int pro_id, int qnty) {
this.pro_id = pro_id;
this.qnty = qnty;
}
// getters and setters
....
// checking the item is already in the cart or not
public boolean isSameProduct(CartItem item) {
return this.pro_id == item.getPro_id();
}
我ShoppingCart
類:
public class ShoppingCart {
private CopyOnWriteArrayList<CartItem> itemList;
public ShoppingCart() {
this.itemList = new CopyOnWriteArrayList<CartItem>();
}
// adding item something wrong here I think..
public boolean addItem(CartItem item) {
boolean flag = false;
if (!this.itemList.isEmpty()) {
for (CartItem itm : this.itemList) {
if (itm.isSameProduct(item)) {
itm.setQnty(item.getQnty() + itm.getQnty());
flag = true;
break;
} else {
this.itemList.add(item);
flag = true;
break;
}
}
} else {
this.itemList.add(item);
flag = true;
}
return flag;
}
public void removeItem(int item_id) {
for (CartItem item : this.itemList) {
if (item.getPro_id() == item_id) {
this.itemList.remove(item);
}
}
}
這是我加入產品的方式和出放:
ShoppingCart sc = new ShoppingCart();
sc.addItem(new CartItem(1, 1));
sc.addItem(new CartItem(1, 2));
sc.addItem(new CartItem(1, 3));
sc.addItem(new CartItem(1, 1));
sc.addItem(new CartItem(2, 1));
sc.addItem(new CartItem(2, 2));
sc.addItem(new CartItem(3, 4));
sc.addItem(new CartItem(3, 1));
// sc.removeItem(3);
for (CartItem item : sc.itemList) {
System.out.println("Item id - " + item.getPro_id() + " : Item Qnty - " + item.getQnty());
}
出輸入:
Item id - 1 : Item Qnty - 7
Item id - 2 : Item Qnty - 1
Item id - 2 : Item Qnty - 2
Item id - 3 : Item Qnty - 4
Item id - 3 : Item Qnty - 1
但預計:
Item id - 1 : Item Qnty - 7
Item id - 2 : Item Qnty - 3
Item id - 3 : Item Qnty - 5
在此先感謝。
您是否嘗試過調試代碼?可以通過在調試模式下逐行執行,也可以使用print語句來跟蹤程序在每個步驟的行爲。 – Ciara