运行不出作业效果,请老师帮忙看一下问题
package com.imooc.shopping; public class Goods { private String goodsId;//商品编号 private String goodsName;//商品名称 private double price;//商品价格 private String goodsDesp;//商品描述 //构造方法 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; } @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.getGoodsId().equals(getGoodsId())&&goods.getGoodsName().equals(goodsName); } return false; } @Override public String toString() { return "商品编号:" + goodsId + ", 商品名称:" + goodsName + ", 商品价格:" + price + ", 商品描述:" + goodsDesp ; } }
package com.imooc.shopping; public class GoodsInCart { private Goods goods; private int num; public GoodsInCart(Goods goods, int num) { super(); this.goods = goods; this.num = num; } 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.shopping; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class GoodsManage { private Set<Goods> goodsSet=new HashSet<Goods>(); public GoodsManage() { } public GoodsManage(Set<Goods> goodsSet) { super(); this.goodsSet = goodsSet; } public Set<Goods> getGoodsSet() { return goodsSet; } public void setGoodsSet(Set<Goods> goodsSet) { this.goodsSet = goodsSet; } //商品信息导入方法 public void importGoods() { Goods goods1=new Goods("S0001","手机",1500,"安卓"); Goods goods2=new Goods("S0002","电视",2500,"网络电视"); Goods goods3=new Goods("S0003","洗衣机",3000,"全自动"); Goods goods4=new Goods("S0004","水杯",10,"运动水杯"); goodsSet.add(goods1); goodsSet.add(goods2); goodsSet.add(goods3); goodsSet.add(goods3); goodsSet.add(goods4); } //显示所有商品信息 public void displayAllGoods() { System.out.println("所有商品为:"); Iterator<Goods> it=goodsSet.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
package com.imooc.shopping; import java.util.HashMap; 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() { } public ShoppingCart(Map<String, GoodsInCart> shoppingCart) { super(); this.shoppingCart = shoppingCart; } public Map<String, GoodsInCart> getShoppingCart() { return shoppingCart; } public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) { this.shoppingCart = shoppingCart; } // 添加商品到购物车 public void addGoodsToCart(GoodsManage gm) { Set<Goods> goods = gm.getGoodsSet(); Scanner sc = new Scanner(System.in); boolean flag = false; Goods go = null; String str = null; if (gm.getGoodsSet().size() == 0) { System.out.println("请先导入商品信息:"); } else { System.out.println("请输入商品编号"); gm.displayAllGoods(); String goodsId = sc.next(); for (Goods g : goods) { if (g.getGoodsId().equals(str)) { flag = true; go = g; break; } } if (flag == true) { System.out.println("请输入购买商品的数量:"); int n = sc.nextInt(); GoodsInCart gic = new GoodsInCart(go, n); shoppingCart.put(str, gic); } } } // 修改购物车中商品的数量 public void updateNumInCart() { Scanner sc = new Scanner(System.in); Set<String> set = shoppingCart.keySet(); String s = null; int n = 0; System.out.println("请输入要修改的商品编号:"); s = sc.next(); for (String str : set) { if (str.equals(s)) { System.out.println("请输入要修改的数量"); n = sc.nextInt(); if (n == 0) { shoppingCart.remove(str); System.out.println("由于商品数量为零,所以移除该商品。"); } shoppingCart.get(str).setNum(n); Iterator<GoodsInCart> it = shoppingCart.values().iterator(); while (it.hasNext()) { System.out.println(it.next()); } } else { System.out.println("购物车中没有该商品!"); } } } // 显示购物车中的所有商品 public void displayAllInCart() { Set<Entry<String, GoodsInCart>> set = shoppingCart.entrySet(); if (set.size() == 0) { System.out.println("您还没有添加任何商品,快去挑选吧"); } else { for (Entry<String, GoodsInCart> entry : set) { System.out.println(entry.getValue().getGoods() + "," + entry.getValue().getNum() + "个"); } } } //结算 public void settleAccounts() { int sum=0; Set<Entry<String, GoodsInCart>> set = shoppingCart.entrySet(); for (Entry<String, GoodsInCart> entry : set) { sum+=(entry.getValue().getGoods().getPrice()*entry.getValue().getNum()); } System.out.println("总金额为:"+sum); shoppingCart.clear(); } }
package com.imooc.shopping; import java.util.Scanner; public class Test { public void mainMenu() { 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 menuOne() { 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 menuTwo() { 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 static void main(String[] args) { Test test = new Test(); GoodsManage gm = new GoodsManage(); ShoppingCart shc = new ShoppingCart(); Scanner sc = new Scanner(System.in); boolean flag = false; test.mainMenu(); while (true) { int n = sc.nextInt(); switch (n) { case 1: test.menuOne(); while (true) { n = sc.nextInt(); if(n==9) { flag=false; break; } switch (n) { case 1: gm.importGoods(); System.out.println("商品信息导入成功!"); test.menuOne(); break; case 2: gm.displayAllGoods(); break; default: System.out.println("请输入有效数字!"); } } case 2: test.menuTwo(); while (true) { n = sc.nextInt(); if(n==9) { flag=false; break; } switch (n) { case 1: shc.addGoodsToCart(gm); test.menuTwo(); break; case 2: shc.updateNumInCart(); test.menuTwo(); break; case 3: shc.displayAllInCart(); test.menuTwo(); break; case 4: shc.settleAccounts(); test.menuTwo(); break; default: System.out.println("请输入有效数字!"); } } case 0: System.exit(0); break; default: System.out.println("请输入有效数字!"); } } } }
0
收起
正在回答 回答被采纳积分+1
1回答
imoocLovers
2018-07-26 17:35:26
问题如下:
红框中这两个位置的变量n不要使用同一个n来接收控制台输入的数据,你可以再定义一个变量,如下:
另一个问题是:建议同学调整一下test.mainMenu()、test.menuOne()、test.menuTwo()的位置,比如test.menuTwo(),你可以把它放在while循环的下面,这样就不用在每个case语句后都调用一次test.menuTwo()啦。祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星