修改购物车的商品数量
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 星