为什么一直显示商品编号输入错误
import java.util.Iterator; import java.util.Map; import java.util.Scanner; //购物车类 public class ShoppingCart { private Map<String, GoodsInCart> shoppingCart;// 购物车 public ShoppingCart(Map<String, GoodsInCart> shoppingCart) { this.setShoppingCart(shoppingCart); } public Map<String, GoodsInCart> getShoppingCart() { return shoppingCart; } public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) { this.shoppingCart = shoppingCart; } // 添加商品到购物车 public void addGoodsToCart(GoodsManage gm) { Scanner sc = new Scanner(System.in); if (gm.getGoodsSet().size() == 0) { System.out.println("还没有商品,记得导入商品信息哦!"); } else { System.out.println("添加商品到购物车"); System.out.println("所有商品信息为:"); gm.importGoods(); Iterator<Goods> it = gm.getGoodsSet().iterator(); while (it.hasNext()) { System.out.println(it.next()); } System.out.println("请输入要添加的商品编号:"); String key = sc.next(); Goods gd = null; it = gm.getGoodsSet().iterator(); while (it.hasNext()) { gd = (Goods) it.next(); if (gd.getGoodsId().equals(key)) { System.out.println("请输入要添加的商品数量:"); int value = sc.nextInt(); GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value); shoppingCart.put(key, goodsInCart); break; } else { System.out.println("商品编号输入错误!"); break; } } // System.out.println("请输入要添加的商品数量:"); // int value = sc.nextInt(); // for (Goods goodsTmpe : gm.getGoodsSet()) { // GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value); // shoppingCart.put(key, goodsInCart); // } } } // 修改购物车中的商品数量 public void updateNumInCart() { } // 显示购物车中的所有商品 public void displayAllInCart() { System.out.println("显示购物车中的所有商品信息"); if (shoppingCart.values().size() == 0) { System.out.println("购物车是空的,赶快装满吧!"); } else { Iterator<GoodsInCart> it = shoppingCart.values().iterator(); while (it.hasNext()) { System.out.println(it.next()); } } } // 结算 public void settleAccounts() { } }
import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Scanner; //测试类 public class TestDemo { Scanner sc = new Scanner(System.in); // 主菜单 public static void menu() { System.out.println("**************************************"); System.out.println(" **主菜单**"); System.out.println(" 1--商品管理"); System.out.println(" 2--购物车"); System.out.println(" 0--退出"); System.out.println("**************************************"); System.out.println("请输入对应的数字进行操作:"); } public static void goodsManageMenu() { System.out.println("**************************************"); System.out.println(" **商品 管理**"); System.out.println(" 1--商品信息导入"); System.out.println(" 2--显示所有商品信息"); System.out.println(" 9--返回上一级菜单"); System.out.println("**************************************"); System.out.println("请输入对应的数字对商品进行管理:"); } public static void shoppingCartMenu() { System.out.println("**************************************"); System.out.println(" **购物车管理**"); System.out.println(" 1--添加商品到购物车"); System.out.println(" 2--修改购物车中的商品数量"); System.out.println(" 3--显示购物车中的所有商品信息"); System.out.println(" 4--结算"); System.out.println(" 9--返回上一级菜单"); System.out.println("**************************************"); System.out.println("请输入对应的数字对购物车进行管理"); } GoodsManage goodsmanage = new GoodsManage(new HashSet<Goods>()); // 商品信息管理部分的逻辑代码 public void manage_Menu_Code() { boolean q = true; int manageNum; while (q) { manageNum = sc.nextInt(); switch (manageNum) { case 1: System.out.println("商品信息导入"); System.out.println("导入成功!"); goodsmanage.importGoods();// 商品信息导入 goodsManageMenu(); break; case 2: System.out.println("显示所有商品信息"); goodsmanage.displayAllGoods();// 调用方法显示所有商品信息 goodsManageMenu(); break; case 9: q = false;// 返回上一级菜单 break; default: } } } // 购物车管理的逻辑代码 public void cart_Menu_Code(ShoppingCart shoppingCart) { int cartNum; boolean v = true; while (v) { cartNum = sc.nextInt(); switch (cartNum) { case 1: shoppingCart.addGoodsToCart(goodsmanage);// 添加商品到购物车 shoppingCartMenu(); break; case 2: break; case 3: shoppingCart.displayAllInCart();// 显示购物车中的所有商品信息 shoppingCartMenu(); break; case 4: break; case 9: v = false; break; default: } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean b = true; int menuNum; TestDemo test = new TestDemo(); ShoppingCart shoppingCart = new ShoppingCart(new HashMap<String, GoodsInCart>()); while (b) { menu();// 调用猪菜单 menuNum = sc.nextInt(); switch (menuNum) { case 1: goodsManageMenu(); test.manage_Menu_Code(); break; case 2: shoppingCartMenu(); test.cart_Menu_Code(shoppingCart); break; case 0: b = false; break; default: System.out.println("该数字没有对应的操作!"); } } } }
46
收起
正在回答
2回答
你的这段代码有问题:
while (it.hasNext()) { gd = (Goods) it.next(); if (gd.getGoodsId().equals(key)) { System.out.println("请输入要添加的商品数量:"); int value = sc.nextInt(); GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value); shoppingCart.put(key, goodsInCart); break; } else { System.out.println("商品编号输入错误!"); break; } }
每输入一次,就只能判断一个商品库中的商品。
建议使用for (Goods goods1 : gm.getGoodsSet())这句代码对商品库中商品进行遍历,如果goods1与用户输入的一致,就赋值给gd;在for循环外,判断gd是否为空,如果不为空就可以继续添加了。
祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星