为什么一直显示商品编号输入错误
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 | 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() { } } |
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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | 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回答
你的这段代码有问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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积分~
来为老师/同学的回答评分吧