购物车问题
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() { } }
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积分~
来为老师/同学的回答评分吧
0 星