修改购物车的商品数量

修改购物车的商品数量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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