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

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

	// 添加到购物车的方法
	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
// 可考虑用如下的代码:添加商品到购物车
	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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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