运行不出作业效果,请老师帮忙看一下问题
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 星