修改购物车的商品数量
package com.imooc.information; import com.imooc.information.GoodsManage; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; /*购物车类*/ /* *属性:购物车(shoppingCart):Map类型 *说明:商品的编号做key值(String 类型) * value为GoodsInCart类型 *方法:添加商品到购物车:public void addGoodsToCart(GoodsManage gm); * 修改购物车中的所有商品:public void changeAllCart(); *结算:public void settleAccounts(); */ public class ShoppingCart { Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>(); public void information() { System.out.println("**********************************"); System.out.println(" ***购物车管理***"); System.out.println(" 1--添加商品到购物车中"); System.out.println(" 2--修改购物车中的商品数量"); System.out.println(" 3--显示购物车中的所有商品信息"); System.out.println(" 4--结算"); System.out.println(" 9--返回上一级"); System.out.println("**********************************"); } public void addGoodsToCart(GoodsManage gm) { Scanner sc = new Scanner(System.in); boolean flag = true; Iterator<Goods> it = gm.goodsSet.iterator(); while (it.hasNext()) { System.out.println(it.next().getGoodsId()); } /********* 判断输入的商品编号商品信息里是否存在 *********/ System.out.println("请输入商品编号:"); String goodsNo = sc.nextLine(); boolean contains = shoppingCart.containsKey(goodsNo); /*****************************************************/ System.out.println("输入要添加的商品数量:"); int goodsNum = sc.nextInt(); /** 导入map集合内 ***/ Iterator<Goods> it2 = gm.goodsSet.iterator(); Set<GoodsInCart> cart = new HashSet<GoodsInCart>(); if(contains){ Set<String> s = shoppingCart.keySet();//获取KEY集合 for (String str : s) { if(str.equals(goodsNo)) shoppingCart.put(str, (int) (shoppingCart.get(str).getNum()+goodsNum)); } } while (it2.hasNext()) { if (it2.next().getGoodsId().equals(goodsNo)) { GoodsInCart goods1 = new GoodsInCart(goodsNum, it2.next()); shoppingCart.put(goodsNo, goods1); } } } public void changeAllCart() { } public void settleAccounts() { } }
在shoppingCart.put(str, (int) (shoppingCart.get(str).getNum()+goodsNum));
}这一行程序报错了 为什么啊
正在回答 回答被采纳积分+1
从定义来看 Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>(); 里面键值对是 <String,GoodsInCart>的类型,shoppingCart.put(str, (int) (shoppingCart.get(str).getNum()+goodsNum)); 这个后面是int类型的,改成
GoodsInCart goodsInCart = new GoodsInCart(it2, (int) (shoppingCart.get(str).getNum()+goodsNum));
shoppingCart.put(str, goodsInCart);
Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>();
根据这句话,shoppingCart的value值应该是GoodsInCart类的对象,而不是你的写一个int类型的变量。首先此处必须是对象,其次必须是GoodsInCart类的对象。需要通过商品信息和数量创建一个GoodsInCart类的对象。
addGoodsToCart(GoodsManage gm)该方法用如下思路完成
首先输入商品编号,然后遍历gm中的set,判断该商品是否存在,如果不存在,则给出错误提示。如果存在则继续执行。注意:如果存在,此处可以保存查找到的商品信息
如果商品存在,则提示输入商品数量。然后用商品数量和之前找到的商品一起创建GoodsInCart的对象。
祝学习愉快!
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星