1.请老师帮我修改一下代码,响了很久都没相通
疑惑处:1.购物车类中的修改购物车中商品数量方法;2.结算方法中的计算总价的方法;3.这几个方法可不可以打包在一起? 4.怎么样设置使一个商品比如手机对应的就是他的购买数量? 想法:针对问题1:利用从键盘接受数据更新购买的数量,利用容器Iterator、Map、set方法,想设计如果从键盘 接受的数据为零强制购买数量为0;2.解决问题3和问题4就可以解决问题2;3.该怎么样设置商品有它对应的价格?用List吗? 代码如下: package com.imooc.goods;//1.商品类 public class Goods { // 定义属性 private String goodsId;// 商品编号 private String goodsName;// 商品名称 private double price;// 商品价格 private String goodsDesp;//商品描述 // 构造方法 public Goods() { super(); } public Goods(String goodsId, String goodsName, double price, String goodsDesp) { super(); this.goodsId = goodsId; this.goodsName = goodsName; this.price = price; this.goodsDesp = goodsDesp; } // getter、setter方法 public String getGoodsId() { return goodsId; } public void setGoodsId(String goodsId) { this.goodsId = goodsId; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getGoodsDesp() { return goodsDesp; } public void setGoodsDesp(String goodsDesp) { this.goodsDesp = goodsDesp; } // hashCode()\equals\toString方法 @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((goodsDesp == null) ? 0 : goodsDesp.hashCode()); result = prime * result + ((goodsId == null) ? 0 : goodsId.hashCode()); result = prime * result + ((goodsName == null) ? 0 : goodsName.hashCode()); long temp; temp = Double.doubleToLongBits(price); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj.getClass() == Goods.class) { Goods goods = ( Goods) obj; return goods.getGoodsName().equals(goodsName) && goods.getPrice() == price && goods.getGoodsId().equals(goodsId)&& goods.getGoodsDesp().equals(goodsDesp) ; } return false; } public String toString() { return "商品信息"+"商品编号:" + goodsId + ",商品名称:" + goodsName + ",商品价格:" + price+",商品描述:" +goodsDesp; } } package com.imooc.goods;//2.商品管理类 import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class GoodsManager { Set<Goods> set = new HashSet<Goods>(); // 商品信息导入的方法 public void importGoods(Goods e) { set.addAll(set); } // 显示所有商品信息的方法 public void displayAllGoods() { Iterator<Goods> it = set.iterator(); while (it.hasNext()) { System.out.println(it.next() + " "); } } public static void main(String[] args) { // 定义GoodSManager类的对象 GoodsManager myGoodsManager = new GoodsManager(); // 定义商品对象 Goods goods1 = new Goods("S001", "手机", 5000, "5G手机"); Goods goods2 = new Goods("S002", "笔记本", 6000, "苹果最新款"); Goods goods3 = new Goods("S003", "洗衣机", 7000, "海尔洗衣机,等离子熨洗"); Goods goods4 = new Goods("S004", "冰箱", 8000, "海尔冰箱,比绝对零度低一点"); // 导入商品信息 myGoodsManager.importGoods(goods1); myGoodsManager.importGoods(goods2); myGoodsManager.importGoods(goods3); myGoodsManager.importGoods(goods4); // 显示所有商品信息 myGoodsManager.displayAllGoods(); } } package com.imooc.goods;//3.购物车中的商品信息类 public class GoodsInCart { // 定义属性 private Goods goods; private int num; // 无参构造方法、有参构造方法 public GoodsInCart() { super(); } public GoodsInCart(Goods goods, int num) { super(); this.goods = goods; this.num = num; } // getter和setter方法 public Goods getGoods() { return goods; } public void setGoods(Goods goods) { this.goods = goods; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } } package com.imooc.goods;//4.购物车类 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 ShoppingCart { Goods goods=new Goods(); Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>(); private String goodsId; // 构造方法 public ShoppingCart() { super(); } public ShoppingCart(Map<String, GoodsInCart> shoppingCart) { super(); this.shoppingCart = shoppingCart; } // getter和setter方法 public Map<String, GoodsInCart> getShoppingCart() { return shoppingCart; } public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) { this.shoppingCart = shoppingCart; } // 添加商品到购物车的方法 public void addGoodsIncart(GoodsManager gm) { System.out.print("请选择要购买的商品"); int i = 0; while (i < 4) { System.out.println("请输入第" + (i + 1) + "条商品信息"); if(shoppingCart.containsKey(goods.getGoodsId())) { System.out.println("商品编号已经存在!请重新输入一个商品编号"); //结束当前循环,跳入到下一个循环 continue; } System.out.println("请输入商品名称"); String goodsName=goods.getGoodsName(); System.out.println("请输入商品描述"); String goodsDesp=goods.getGoodsDesp(); System.out.println("请输入商品价格"); double goodsPrice=0; try { goodsPrice = goods.getPrice(); }catch(java.util.InputMismatchException e){ System.out.println("商品价格格式不正确!请输入数值型格式的数值"); continue; } Goods goods = new Goods(goodsId, goodsName, goodsPrice,goodsDesp); // 将商品信息添加到HashMap中 shoppingCart.putAll(shoppingCart); i++; } } // 修改购物车中商品数量的方法,数量从键盘接受,在删除 public void disPlayAllIncart() { int i=0; Set<Goods> set = new HashSet<Goods>(); set.addAll(set); System.out.println("请输入整数型数据"); System.out.println("请输入第" + (i + 1) + "条商品信息"); //for循环,依次输入四个商品需要购买的数量,默认为零 if (i < 4) { Scanner console = new Scanner(System.in); GoodsInCart goodsInCart = new GoodsInCart(); set.remove(goodsInCart.getNum()); // int shoppingCArt=myGoodsInCart.getNum(); int myGoodsInCart = console.nextInt(); //如果什么都不输入,默认购买数量为零 /* if(myGoodsInCart) { return myGoodsInCart=0; }*/ set.add(this.goods); } Iterator<Goods> it = set.iterator(); it = set.iterator(); while (it.hasNext()) { System.out.println(it.next() + " "); } } // 显示购物车中的所有商品 public void updateNumIncart() { Iterator<GoodsInCart> itGoods = shoppingCart.values().iterator(); while (itGoods.hasNext()) { System.out.println(itGoods.next()); } } // 结算方法:单价乘以对应商品购买数量 public void settleAllCounts() { int sumPrice = goods1.getNum() * 5000 + goods2.getNum() * 6000 + goods3.getNum() * 7000 + goods4.getNum() * 6000; System.out.println("您的消费总额为:" + sumPrice); } }
76
收起
正在回答 回答被采纳积分+1
3回答
Ironxi_work
2018-04-30 21:26:45
// 添加商品到购物车的方法 public void addGoodsIncart(GoodsManager gm) { System.out.print("请选择要购买的商品"); int i = 0; while (i < 4) { System.out.println("请输入第" + (i + 1) + "条商品信息"); if(shoppingCart.containsKey(goods.getGoodsId())) { System.out.println("商品编号已经存在!请重新输入一个商品编号"); //结束当前循环,跳入到下一个循环 continue; } if(((Map<String,GoodsInCart>) goods).size()==0) { System.out.println("请输入商品信息"); } System.out.println("请输入商品名称"); String goodsName=goods.getGoodsName(); System.out.println("请输入商品描述"); String goodsDesp=goods.getGoodsDesp(); System.out.println("请输入商品价格"); double goodsPrice=0; try { goodsPrice = goods.getPrice(); }catch(java.util.InputMismatchException e){ System.out.println("商品价格格式不正确!请输入数值型格式的数值"); continue; } Goods goods = new Goods(goodsId, goodsName, goodsPrice,goodsDesp); // 将商品信息添加到HashMap中 shoppingCart.putAll(shoppingCart); i++; } }
好帮手慕珊
2018-04-09 10:45:40
1、添加商品到购物车的方法,这个思路是有问题的,商品都已经放到GoodsManager的对象gm中了,所以此处不用再输入商品描述和价格了。正确的思路是,首先判断gm中是否有商品,也就是gm.size()是否为0,如果为0就给出商品未导入的提示。如果不为0,就提示输入商品编号,然后判断商品编号在gm中是否存在,如果存在就接着输入商品数量,然后把从gm中查询到的商品和商品数量一起,创建一个GoodsInCart类的对象,然后添加到shoppingCart中。
2、显示购物车中所有商品的方法,就是遍历shoppingCart这个集合,把信息输出就可以了
3、结算后要清空购物车,也就是调用shoppingCart的clear()方法
4、修改购物车中商品数量,先输入商品编号,然后去shoppingCart中查询该商品是否存在,如果不存在给出错误提示,如果存在,就把查询到的商品信息存到一个Goods类的引用goods中,然后输入数量,调用goods的设置数量的方法去设置商品数量。如果是为0的情况,设置完商品数量后,再把该商品从shoppingCart中移除。
按上述思路完成就可以解决你的几个问题啦。
祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星