购物车问题

购物车问题

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
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
 
//购物车类
public class ShoppingCart {
    private Map<String, GoodsInCart> 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) {
        Scanner sc = new Scanner(System.in);
        if (gm.getGoodsSet().size() == 0) {
            System.out.println("还没有商品,记得导入商品信息哦!");
        else {
            System.out.println("添加商品到购物车");
            System.out.println("所有商品信息为:");
            //gm.importGoods();
            gm.getGoodsSet().add(null);
            Iterator<Goods> it = gm.getGoodsSet().iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
            System.out.println("请输入要添加的商品编号:");
            String key = sc.next();
            System.out.println("请输入要添加的商品数量:");
            int value = sc.nextInt();
            for (Goods goodsTmpe : gm.getGoodsSet()) {
                GoodsInCart goodsInCart = new GoodsInCart(goodsTmpe, value);
                shoppingCart.put(key, goodsInCart);
            }
        }
    }
 
    // 修改购物车中的商品数量
    public void updateNumInCart() {
 
    }
 
    // 显示购物车中的所有商品
    public void displayAllInCart() {
        System.out.println("显示购物车中的所有商品信息");
        Iterator<GoodsInCart> it = shoppingCart.values().iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
 
    // 结算
    public void settleAccounts() {
 
    }
}
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
public class TestDemo {
    Scanner sc = new Scanner(System.in);
 
    // 主菜单
    public static 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 static void goodsManageMenu() {
        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 static void shoppingCartMenu() {
        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 manage_Menu_Code(GoodsManage goodsmanage) {
        boolean q = true;
        int manageNum;
        while (q) {
            manageNum = sc.nextInt();
            switch (manageNum) {
            case 1:
                System.out.println("商品信息导入");
                System.out.println("导入成功!");
                goodsmanage.importGoods();// 商品信息导入
                goodsManageMenu();
                break;
            case 2:
                System.out.println("显示所有商品信息");
                goodsmanage.displayAllGoods();// 调用方法显示所有商品信息
                goodsManageMenu();
                break;
            case 9:
                q = false;// 返回上一级菜单
                break;
            default:
            }
        }
    }
 
    // 购物车管理的逻辑代码
    public void cart_Menu_Code(ShoppingCart shoppingCart) {
        int cartNum;
        boolean v = true;
        while (v) {
            cartNum = sc.nextInt();
            switch (cartNum) {
            case 1:
                shoppingCart.addGoodsToCart(new GoodsManage(new HashSet<Goods>()));// 添加商品到购物车
                shoppingCartMenu();
                break;
            case 2:
 
                break;
            case 3:
                 
                shoppingCart.displayAllInCart();// 显示购物车中的所有商品信息
                shoppingCartMenu();
                break;
            case 4:
                break;
            case 9:
                v=false;
                break;
            default:
            }
        }
    }
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean b = true;
        int menuNum;
        while (b) {
            menu();// 调用猪菜单
            menuNum = sc.nextInt();
            switch (menuNum) {
            case 1:
                goodsManageMenu();
                new TestDemo().manage_Menu_Code(new GoodsManage(new HashSet<Goods>()));
                break;
            case 2:
                shoppingCartMenu();
                new TestDemo().cart_Menu_Code(new ShoppingCart(new HashMap<String, GoodsInCart>()));
                break;
            case 0:
                b = false;
                break;
            default:
                System.out.println("该数字没有对应的操作!");
            }
 
        }
    }
}

显示购物车中的商品信息输出的是地址  ,,怎么正确的将输入的编号,商品数量添加到map中呢

正在回答

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

1回答

1、首先你的TestDemo类在调用方法的使用,GoodsManage的对象不应该每次都new一个新的,这样的话,如果导入商品后,再去显示购物车中显示商品信息,会发现一个商品都没有,因此需要定义一个全局的GoodsManage对象。

2、关于购物车中的商品信息是地址的问题,因为购物车是使用HashMap存放数据的,而其value值是GoodsInCart类的对象,所以还需要进一步获取Goods类的对象才行,如果你的Goods类有toString()方法,那么直接it.next().getGoods()就可以输出商品信息了。

3、商品添加到map中并没有问题。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • qq_左撇子A_0 提问者 #1
    我也想过在ManAge中重写toString方法 但是显示购物车中添加的商品信息中回显示price, toString方法返回的是字符串 没法在return后面调用Goods中的prace的get方法
    2017-10-26 14:41:27
  • 好帮手慕珊 回复 提问者 qq_左撇子A_0 #2
    可以呀,字符串也是可以和其他数据类型连接到一起输出的,比如:“价格:"+getPrice()这样就是字符串了
    2017-10-26 15:02:36
  • qq_左撇子A_0 提问者 #3
    非常感谢!
    2017-10-26 20:13:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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