再添加商品到购物车过程中,如果没有该商品,希望提示并重新输入该怎么弄?代码如下
// 添加到购物车的方法
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 星