为什么购物车每次只能存一条商品信息?
package com.imooc.javapor3; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; //购物车类 public class ShoppingCart { private Map<String,GoodsInCart> shoppingCart; public 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) { System.out.println("购物车中的所有商品信息为:"); gm.displayAllGoods(); Iterator<Goods> it = gm.getGoodsSet().iterator(); System.out.println("请输入要添加的商品编号:"); Scanner sc = new Scanner(System.in); String goodsid = sc.nextLine(); while(it.hasNext()) { Goods good = it.next(); if(good.getGoodsId().equals(goodsid)){ System.out.println(good); System.out.println("请输入商品数量:"); int goodsnum = sc.nextInt(); GoodsInCart goodsincart = new GoodsInCart(good,goodsnum); this.shoppingCart.put(good.getGoodsId(), goodsincart); System.out.println("商品添加成功!"); } } } //修改购物车中的商品数量 public void updateNumInCart() { } //显示购物车中的所有商品 public void displayAllInCart() { Iterator<Map.Entry<String, GoodsInCart>> it = this.shoppingCart.entrySet().iterator(); if(it.hasNext()) { while(it.hasNext()){ System.out.println( it.next().getValue().getGoods().getGoodsName() + ",数量: " + it.next().getValue().getNum() ); } }else { System.out.println("购物车是空的哦,快去添加商品吧!"); } } //结算 public void settleAccounts() { } } //分割--------------------- package com.imooc.javapor3; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; public class TestDemo { public static void main(String[] args){ //测试Goods类和GoodsManage类 // Set set = new HashSet(); // GoodsManage gm = new GoodsManage(set); // gm.importGoods(); // gm.displayAllGoods(); // Scanner sc = new Scanner(System.in); // t.Menu(); // int a = sc.nextInt(); //Iterator it = gm.getGoodsSet().iterator(); TestDemo t = new TestDemo(); // Set<Goods> set = new HashSet<Goods>(); GoodsManage gm = new GoodsManage(set); GoodsInCart go = new GoodsInCart(); ShoppingCart sh = new ShoppingCart(); Map<String,GoodsInCart> shoppingCart = new HashMap<String,GoodsInCart>(); sh.setShoppingCart(shoppingCart); //主循环结构 boolean flag = true; while(flag) { t.Menu(); Scanner sc = new Scanner(System.in); int a = sc.nextInt(); switch(a) { case 1: t.GoodsMenuwhile(gm); break; case 2: if(gm.getGoodsSet().size() == 0) { System.out.println("商品信息还未导入!"); break; }else{ t.CartMenuwhile(gm,sh); break; } case 0:flag=false; sc.close(); System.out.println("谢谢使用!"); System.exit(0); break; default:System.out.println("输入操作数不合理,请重新输入!"); } } } //主菜单 public 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 void GoodsMenu() { 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 void GoodsMenuwhile(GoodsManage gm) { Iterator<Goods> it = gm.getGoodsSet().iterator(); boolean flag1 = true; while(flag1) { GoodsMenu(); Scanner sc1 = new Scanner(System.in); int a1 = sc1.nextInt(); switch(a1) { case 1:gm.importGoods(); it=gm.getGoodsSet().iterator(); break; case 2:if(it.hasNext()) { gm.displayAllGoods(); }else{ System.out.println("商品信息未导入,请先导入"); } break; case 9:flag1 =false; break; default : System.out.println("输入操作数不合理,请重新输入"); break; } } } //购物车管理菜单 public void CartMenu() { 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 CartMenuwhile(GoodsManage gm,ShoppingCart sh) { boolean flag2 = true; while(flag2) { CartMenu(); Scanner sc = new Scanner(System.in); int a = sc.nextInt(); switch(a) { case 1: sh.addGoodsToCart(gm); break; case 2:break; case 3:sh.displayAllInCart(); break; case 4:break; case 9: flag2 = false; break; default : System.out.println("输入操作数不合理,请重新输入!"); break; } } } }
32
收起
正在回答
2回答
嗯。。。好吧。你的添加商品方法是没有问题的,应该是显示商品信息的方法存在问题。显示信息:获取shoppingCart的keySet集合,然后对其进行遍历,并取得Goods 的值并打印。你可以尝试完成以下,如果有问题的话,建议你把全部代码贴出来,方便准确的定位你的问题。祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星