再添加商品到购物车过程中,如果没有该商品,希望提示并重新输入该怎么弄?代码如下
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( "商品库中暂时没有商品,请先导入商品到商品库~" ); } } |
70
收起
正在回答
3回答
其实这个流程控制可以在Test类实现,当没有商品你给出提示就如你代码所示在方法中判断商品是否为空,如果没有商品就给出提示。但是想让用户重新输入,其实可以在Test类中实现。在对购物车进行管理时,可以使用while循环,当为true时先显示一下菜单,然后让用户输入,在while循环中在去书写对应的case语句,这样在对应的case语句下执行添加商品到购物车时,然后break。这样如果没有商品时,方法内部就会输出没有商品的提示,然后break之后,Test类中又会去执行while循环语句中调用菜单的方法,重新让用户去选择操作。
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想要给出提示没有该商品并重新输入具体怎样操作?不是很懂?
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧