购物车问题
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 | import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; //购物车类 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(); gm.getGoodsSet().add( null ); Iterator<Goods> it = gm.getGoodsSet().iterator(); while (it.hasNext()) { System.out.println(it.next()); } System.out.println( "请输入要添加的商品编号:" ); String key = sc.next(); System.out.println( "请输入要添加的商品数量:" ); int value = sc.nextInt(); for (Goods goodsTmpe : gm.getGoodsSet()) { GoodsInCart goodsInCart = new GoodsInCart(goodsTmpe, value); shoppingCart.put(key, goodsInCart); } } } // 修改购物车中的商品数量 public void updateNumInCart() { } // 显示购物车中的所有商品 public void displayAllInCart() { System.out.println( "显示购物车中的所有商品信息" ); 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 | 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( "请输入对应的数字对购物车进行管理" ); } // 商品信息管理部分的逻辑代码 public void manage_Menu_Code(GoodsManage goodsmanage) { 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( new GoodsManage( new HashSet<Goods>())); // 添加商品到购物车 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; while (b) { menu(); // 调用猪菜单 menuNum = sc.nextInt(); switch (menuNum) { case 1 : goodsManageMenu(); new TestDemo().manage_Menu_Code( new GoodsManage( new HashSet<Goods>())); break ; case 2 : shoppingCartMenu(); new TestDemo().cart_Menu_Code( new ShoppingCart( new HashMap<String, GoodsInCart>())); break ; case 0 : b = false ; break ; default : System.out.println( "该数字没有对应的操作!" ); } } } } |
显示购物车中的商品信息输出的是地址 ,,怎么正确的将输入的编号,商品数量添加到map中呢
64
收起
正在回答
1回答
1、首先你的TestDemo类在调用方法的使用,GoodsManage的对象不应该每次都new一个新的,这样的话,如果导入商品后,再去显示购物车中显示商品信息,会发现一个商品都没有,因此需要定义一个全局的GoodsManage对象。
2、关于购物车中的商品信息是地址的问题,因为购物车是使用HashMap存放数据的,而其value值是GoodsInCart类的对象,所以还需要进一步获取Goods类的对象才行,如果你的Goods类有toString()方法,那么直接it.next().getGoods()就可以输出商品信息了。
3、商品添加到map中并没有问题。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧