5-2购物车问题,急,找了半天找不出来问题。

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

登陆购买课程后可参与讨论,去登陆

1回答
chrismorgen 2018-07-22 09:41:27

在代码的运行过程中,如果没有匹配的id则执行else中的语句,但是你在else中也写了break;所以就算没有匹配到也会结束循环,所以只能输入同一个商品,修改意见:建议你在for循环外定义一个boolean类型的flag,默认值为false,当有匹配的商品id时,则将flag设置为true,然后在for循环根据flag进行逻辑操作,如果flag为false,则提示用户未找到对应商品,如果我的建议及解决了你的问题,请采纳,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5b53e0e10001b50003610137.jpg

  • 提问者 Acolasia丶y #1
    感谢!!!
    2018-07-22 10:10:28
  • 提问者 Acolasia丶y #2
    还有点疑问,那个if的判断语句中比较应该是能找到相匹配的啊,集合里有的,按您说的确实能解决这个问题。可还是不明白,有匹配的id为什么会跳到else里。
    2018-07-22 10:13:45
  • chrismorgen 回复 提问者 Acolasia丶y #3
    有匹配的id不就不会执行else语句了,但会执行if语句中的break,也会跳出循环,祝学习愉快~
    2018-07-22 13:50:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师