5-2购物车问题,急,找了半天找不出来问题。
// 添加商品到购物车
public void addGoodsToCart(GoodsManage goodsManage) {
if (goodsManage.getHashSet().size() == 0) {
System.out.println("请先导入商品列表!");
} else {
goodsManage.displayAllGoods();
System.out.println("请输入需要添加的商品编号:");
String string = scanner.next();
for (Goods goods : goodsManage.getHashSet()) {
// Goods goods = iterator.next();
System.out.println(goods);
if (string.equals(goods.getGoodsId())) {
System.out.println("请输入商品数量:");
int num = scanner.nextInt();
GoodsInCart goodsInCart = new GoodsInCart(goods, num);
shoppingCart.put(string, goodsInCart);
break;
} else {
System.out.println("未找到对应商品!");
break;
}
}
}
}
Iterator也用过了,while也用了。都是一样的问题,只能输入同一个商品,第一次输入后,再添加商品就直接跳出到:未找到对应的商品。
正在回答 回答被采纳积分+1
在代码的运行过程中,如果没有匹配的id则执行else中的语句,但是你在else中也写了break;所以就算没有匹配到也会结束循环,所以只能输入同一个商品,修改意见:建议你在for循环外定义一个boolean类型的flag,默认值为false,当有匹配的商品id时,则将flag设置为true,然后在for循环根据flag进行逻辑操作,如果flag为false,则提示用户未找到对应商品,如果我的建议及解决了你的问题,请采纳,祝学习愉快~

- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星