为什么购物车每次只能存一条商品信息?

为什么购物车每次只能存一条商品信息?

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package com.imooc.javapor3;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
 
//购物车类
public class ShoppingCart {
    private Map<String,GoodsInCart> shoppingCart;
     
    public ShoppingCart() {
         
    }
    public ShoppingCart(Map<String,GoodsInCart> shoppingCart) {
        this.setShoppingCart(shoppingCart);
    }
     
 
    public Map<String, GoodsInCart> getShoppingCart() {
        return shoppingCart;
    }
 
    public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) {
        this.shoppingCart = shoppingCart;
    }
     
    //添加商品到购物车
    public void addGoodsToCart(GoodsManage gm) {
        System.out.println("购物车中的所有商品信息为:");
        gm.displayAllGoods();
        Iterator<Goods> it = gm.getGoodsSet().iterator();
        System.out.println("请输入要添加的商品编号:");
        Scanner sc = new Scanner(System.in);
        String goodsid = sc.nextLine();
         while(it.hasNext()) {
             Goods good = it.next();
             if(good.getGoodsId().equals(goodsid)){
                 System.out.println(good);
                System.out.println("请输入商品数量:"); 
                int goodsnum = sc.nextInt();
                GoodsInCart goodsincart = new GoodsInCart(good,goodsnum);
                 
                this.shoppingCart.put(good.getGoodsId(), goodsincart);
                 
                System.out.println("商品添加成功!");
             
         }
        }
 
         
        
         
     
    //修改购物车中的商品数量
    public void updateNumInCart() {
         
    }
    //显示购物车中的所有商品
    public void displayAllInCart() {
         
        Iterator<Map.Entry<String, GoodsInCart>> it = this.shoppingCart.entrySet().iterator();
        if(it.hasNext()) {
            while(it.hasNext()){
                System.out.println( it.next().getValue().getGoods().getGoodsName() + ",数量: " + it.next().getValue().getNum() );
            }
        }else {
            System.out.println("购物车是空的哦,快去添加商品吧!");
        }
         
    }
    //结算
    public void settleAccounts() {
         
    }
     
   
     
     
}
//分割---------------------
package com.imooc.javapor3;
 
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
 
public class TestDemo {
   public static void main(String[] args){
       //测试Goods类和GoodsManage类
//     Set set = new HashSet();
//     GoodsManage gm = new GoodsManage(set);
//     gm.importGoods();
//     gm.displayAllGoods();
//     Scanner sc = new Scanner(System.in);
//     t.Menu();
//     int a = sc.nextInt();
       //Iterator it = gm.getGoodsSet().iterator();
        
       TestDemo t = new TestDemo(); 
       //
       Set<Goods> set = new HashSet<Goods>();
       GoodsManage gm = new GoodsManage(set);
        
       GoodsInCart  go = new GoodsInCart();
       ShoppingCart sh = new ShoppingCart();
        
       Map<String,GoodsInCart> shoppingCart = new HashMap<String,GoodsInCart>();
       sh.setShoppingCart(shoppingCart);
        
       //主循环结构
       boolean flag = true;
       while(flag) {
           t.Menu();
           Scanner sc = new Scanner(System.in);
           int a = sc.nextInt();
           switch(a) {
           case 1: t.GoodsMenuwhile(gm);
                   break;
           case 2if(gm.getGoodsSet().size() == 0) {
                       System.out.println("商品信息还未导入!");
                       break;
                   }else{
                       t.CartMenuwhile(gm,sh);
                       break;
                   }
            
           case 0:flag=false;
                  sc.close();
                  System.out.println("谢谢使用!");
                  System.exit(0);
                  break;
           default:System.out.println("输入操作数不合理,请重新输入!");
           }
       }
        
        
   }
    
   //主菜单
   public void Menu() {
       System.out.println("****************************");
       System.out.println("**********主菜单**********");
       System.out.println("1--商品管理");
       System.out.println("2--购物车");
       System.out.println("0--退出");
       System.out.println("****************************");
       System.out.println("请输入对应数字进行操作:");
   }
    
   //商品管理菜单
   public void GoodsMenu() {
       System.out.println("****************************");
       System.out.println("*******商品管理*******");
       System.out.println("1--商品信息导入");
       System.out.println("2--显示所有商品信息");
       System.out.println("9--返回上一级菜单");
       System.out.println("****************************");
       System.out.println("请输入对应数字对商品进行管理:");
   }
     
   //商品管理逻辑结构 
   public void GoodsMenuwhile(GoodsManage gm) {  
       Iterator<Goods> it = gm.getGoodsSet().iterator();
       boolean flag1 = true;
        
       while(flag1) {
           GoodsMenu();
           Scanner sc1 = new Scanner(System.in);
           int a1 = sc1.nextInt();
           switch(a1) {
           case 1:gm.importGoods();
                  it=gm.getGoodsSet().iterator();
                  break;
           case 2:if(it.hasNext()) {
                   gm.displayAllGoods();
                        }else{
                            System.out.println("商品信息未导入,请先导入");
                       }
                   break;
           case 9:flag1 =false;
                 
                  break;
            default : System.out.println("输入操作数不合理,请重新输入");
                     break;
           }   
       }
    
   }
    
   //购物车管理菜单
   public void CartMenu() {
       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("****************************");
       System.out.println("请输入对应数字对购物车进行管理:");
   }
    
   //购物车管理逻辑结构
   public void CartMenuwhile(GoodsManage gm,ShoppingCart sh) {
        
       boolean flag2 = true;
       while(flag2) {
           CartMenu();
           Scanner sc = new Scanner(System.in);
           int a = sc.nextInt();
           switch(a) {
             
           case 1: sh.addGoodsToCart(gm);
                   break;
           case 2:break;
           case 3:sh.displayAllInCart();
                   break;
           case 4:break;
           case 9: flag2 = false;
                   break;
           default : System.out.println("输入操作数不合理,请重新输入!");
                     break;
           }
            
            
            
       }
        
   }
}


正在回答

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

2回答

嗯。。。好吧。你的添加商品方法是没有问题的,应该是显示商品信息的方法存在问题。显示信息:获取shoppingCart的keySet集合,然后对其进行遍历,并取得Goods 的值并打印。你可以尝试完成以下,如果有问题的话,建议你把全部代码贴出来,方便准确的定位你的问题。祝学习愉快~

  • Bye白夜 提问者 #1
    确实是我的遍历方法出现了问题,已经解决,谢谢老师
    2017-11-14 18:58:15
一叶知秋519 2017-11-14 11:20:38

你好,根据作业要求,每次存一条数据是可以的。祝学习愉快~

  • 提问者 Bye白夜 #1
    老师我的意思是我的购物车只能存下最新选择的商品信息,没有做到可以存储多件不同的商品。。。
    2017-11-14 11:29:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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