再添加商品到购物车过程中,如果没有该商品,希望提示并重新输入该怎么弄?代码如下
// 添加到购物车的方法 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
// 可考虑用如下的代码:添加商品到购物车 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积分~
来为老师/同学的回答评分吧
0 星