再添加商品到购物车过程中,如果没有该商品,希望提示并重新输入该怎么弄?代码如下

再添加商品到购物车过程中,如果没有该商品,希望提示并重新输入该怎么弄?代码如下

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
// 添加到购物车的方法
public void addGoodsToCart(GoodsManager gm) {
 
    if (gm.goodSet.size() != 0) {
        // 首先显示所有商品的信息
        gm.displayAllgoods();
        // 控制循环
        boolean flag = true;
        // 获得导入的商品信息集合
        Iterator<Goods> it = gm.goodSet.iterator();
 
        while (flag) {
 
            System.out.println("请输入要添加的商品编号:");
            Scanner inputGoodsId = new Scanner(System.in);
            String gid = inputGoodsId.next();
            GoodsIncart gic = new GoodsIncart();
            // 通过输入的商品编号去找到对应的商品信息
            while (it.hasNext()) {
                try {
                    Goods n = it.next();
                    if (gid.equals(n.getGoodsId())) {
                        // 如果存在,将商品导入
                        gic.setGoods(n);
 
                        System.out.println("请输入要添加的商品的数量:");
                        Scanner inputGoodsNo = new Scanner(System.in);
 
                        int gn = inputGoodsNo.nextInt();
                        // 将数量导入
                        gic.setNum(gn);
                        // 将物品放入购物车
                        shopping.put(gid, gic);
 
                        break;
                    else {
                        System.out.println("找不到你输入的商品啊亲,看清楚再试试吧~");
                        inputGoodsId.next();
                    }
                catch (InputMismatchException e) {
                    System.out.println("输入的格式不正确,请按要求重新输入!");
                    continue;// 如果输入的格式不正确,则要求用户重新输入
                }
            }
 
        }
 
    else {
        System.out.println("商品库中暂时没有商品,请先导入商品到商品库~");
 
    }
}


正在回答

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

3回答

其实这个流程控制可以在Test类实现,当没有商品你给出提示就如你代码所示在方法中判断商品是否为空,如果没有商品就给出提示。但是想让用户重新输入,其实可以在Test类中实现。在对购物车进行管理时,可以使用while循环,当为true时先显示一下菜单,然后让用户输入,在while循环中在去书写对应的case语句,这样在对应的case语句下执行添加商品到购物车时,然后break。这样如果没有商品时,方法内部就会输出没有商品的提示,然后break之后,Test类中又会去执行while循环语句中调用菜单的方法,重新让用户去选择操作。

  • 慕后端3163330 提问者 #1
    商品只有goods001~goods004这四种,如果输入goods005想要给出提示没有该商品并重新输入具体怎样操作?不是很懂?
    2017-08-04 15:47:47
  • Tender10 回复 提问者 慕后端3163330 #2
    1、在addGoodsToCart()方法中,先显示一下所有的商品,然后让用户输入要添加的商品编号。 2、定义一个空的商品对象,Goods gd = null; 3、通过for循环遍历出商品集合中的所有商品,循环中通过if判断,当该输入的商品编号等于商品集合中的商品时,就将该商品赋值给gd。然后break跳出循环。 4、循环外也需要做一个判断,因为有可能商品编号超出范围了,这个时候就判断gd是否为null,如果是就输出商品信息不存在。如果不是在提示用户输入商品的数量。并且添加到购物车中。 5、在Test类对应的case语句下,当调用过这个方法后,如果输入的商品购物车中没有,就会输出商品不存在的信息,这个时候就会重新调用菜单,让用户重新选择操作。
    2017-08-04 16:36:35
  • 慕后端3163330 提问者 #3
    非常感谢!用while做出来了
    2017-08-04 17:35:21
very_well 2017-10-06 20:55:25
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
// 可考虑用如下的代码:添加商品到购物车
    public void addGoodsToCart(GoodsManager gm)
    {
        // 输出提示语及GoodsManager中所有商品信息
        System.out.println("添加商品到购物车");
        System.out.println("@所有商品信息为:");
         
        for (Goods goods : gm.getGoodsSet())
        {
             
            System.out.println(goods);
        }
        this.displayAllInCart();
         
        /*
         * 总共三重循环 第一重,从键盘循环输入商品编号
         * 第二重,遍历已有的商品编号,如果与输入的编号相等则继续向下执行(输入数量),否则遍历完后回到上层循环,继续从键盘输入商品编号
         * 第三重,从键盘输入商品的数量,如果输入的数量不是>0的整数,则提示重新输入,直到输入正确的数量为止
         
         */
        Scanner sc = new Scanner(System.in);
        // 第一重循环,从键盘循环输入商品编号
        while (true)
        {
            System.out.println("请输入要添加的商品编号");
            String input = sc.next();
            //判断添加的商品是否已经在购物车中,如果在则提示在原来的基础上添加数量
            if (this.getShoppingCart().containsKey(input))
            {
                System.out.println("你已经添加过该商品,将添加更多数量的该类商品!");
                System.out.println("请输入要新增的商品数量(正整数):");
                 
                // 从键盘输入商品的数量,如果输入的数量不是>0的整数,则提示重新输入,直到输入正确的数量为止
                while (true)
                {
                    try
                    {
                        int n = sc.nextInt();
                        if (n > 0)
                        {
                            //对该商品在原来的数量上增加输入的数量
                             
                            this.getShoppingCart().get(input).setNum(this.getShoppingCart().get(input).getNum()+n);
                            this.displayAllInCart();
                            return;// 如果输入正确信息,则加入购物车后结束方法执行
                        else
                        {
                            System.out.println("请输入正整数");
                             
                        }
                    catch (Exception e)
                    {
                        System.out.println("请输入正整数");
                        sc.next();
                    }
                     
                }
                 
            else
             
            {
                // 第二重循环,遍历已有的商品编号,如果与输入的编号相等则继续向下执行(输入数量),否则遍历完后回到上层循环,继续从键盘输入商品编号
                for (Goods goods : gm.getGoodsSet())
                 
                {
                    if (goods.getGoodsId().equals(input))
                    {
                        System.out.println("请输入要添加的商品数量(正整数):");
                         
                        // 第三重循环,从键盘输入商品的数量,如果输入的数量不是>0的整数,则提示重新输入,直到输入正确的数量为止
                        while (true)
                        {
                            try
                            {
                                int n = sc.nextInt();
                                if (n > 0)
                                {
                                    //将商品与数量添加到ShoppingCart对象的属性 Map<String, GoodsInCart> shoppingCart对象中
                                    GoodsInCart goodsInCart = new GoodsInCart(goods, n);                                  
                                    this.getShoppingCart().put(input, goodsInCart);
                                    this.displayAllInCart();
                                    return;// 如果输入正确信息,则加入购物车后结束方法执行
                                else
                                {
                                    System.out.println("请输入正整数");
                                     
                                }
                            catch (Exception e)
                            {
                                System.out.println("请输入正整数");
                                sc.next();
                            }
                             
                        }
                    }
                }
                 
                System.out.println("商品编号输入不正确,请重新输入");
            }
        }
         
    }


提问者 慕后端3163330 2017-08-04 15:47:21

商品只有goods001~goods004这四种,如果输入goods005想要给出提示没有该商品并重新输入具体怎样操作?不是很懂?

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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