修改购物车的商品数量

修改购物车的商品数量

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

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

2回答
very_well 2017-10-06 21:26:55

从定义来看 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);


好帮手慕珊 2017-07-31 15:24:15

Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>();

根据这句话,shoppingCart的value值应该是GoodsInCart类的对象,而不是你的写一个int类型的变量。首先此处必须是对象,其次必须是GoodsInCart类的对象。需要通过商品信息和数量创建一个GoodsInCart类的对象。

addGoodsToCart(GoodsManage gm)该方法用如下思路完成

首先输入商品编号,然后遍历gm中的set,判断该商品是否存在,如果不存在,则给出错误提示。如果存在则继续执行。注意:如果存在,此处可以保存查找到的商品信息

如果商品存在,则提示输入商品数量。然后用商品数量和之前找到的商品一起创建GoodsInCart的对象。

祝学习愉快!

  • 在没输入商品数量之前用是什么保存,麻烦具体写出来,输入数量之后呢?
    2017-08-03 17:39:29
  • 添加商品到购物车之前,商品都存在GoodsManage的对象中,也就是addGoodsToCart(GoodsManage gm)这个方法的参数。输入数量之后,要创建GoodsInCart类的对象,然后将其存储在ShopingCart类中的HashMap对象中
    2017-08-03 18:55:28
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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