Java自定义购物车开发中对象数组前序条目覆盖后续条目问题排查
问题根因
- 遍历逻辑错误:
addItems方法中遍历已存商品的循环条件写死为i < 1,永远只会检查购物车第一个商品,无法适配多商品的重复校验场景。 - 计数逻辑错误:
numOfItem自增代码放在了添加判断逻辑外部,无论商品是否添加成功(重复/满仓)都会计数+1,导致购物车商品计数、存储位置全部错位。 - 满仓判断逻辑完全失效:当前代码判断
i > CAPACITY永远不会触发,无法正确识别购物车满的状态。
修复方案
直接修改ShoppingCart.java中的addItems方法即可,全程只用数组操作,符合作业要求,修复后代码如下:
public void addItems(ItemToPurchase item) { // 先校验购物车是否已满 if (numOfItem >= CAPACITY) { System.out.println("SHOPPING CART IS FULL."); return; } boolean existFlag = false; // 遍历所有已添加的商品校验重复 for (int i = 0; i < numOfItem; i++) { if (cartItems[i].getName().equals(item.getName())) { System.out.println("SHOPPING CART ALREADY EXISTS."); existFlag = true; break; } } // 无重复才执行添加,只有添加成功才更新计数 if (!existFlag) { cartItems[numOfItem] = item; numOfItem++; } }
修复后即可同时覆盖商品重复、不重复两种场景,和预期输出完全一致。
内容的提问来源于stack exchange,提问作者ZW-Lam
相关产品推荐
相关产品推荐

