运行不出作业效果,请老师帮忙看一下问题

运行不出作业效果,请老师帮忙看一下问题

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("请输入有效数字!");
			}
		}

	}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imoocLovers 2018-07-26 17:35:26

问题如下:

http://img1.sycdn.imooc.com//climg/5b59936a000158db09480468.jpg

红框中这两个位置的变量n不要使用同一个n来接收控制台输入的数据,你可以再定义一个变量,如下:

http://img1.sycdn.imooc.com//climg/5b59949900015c0510400894.jpg

另一个问题是:建议同学调整一下test.mainMenu()、test.menuOne()、test.menuTwo()的位置,比如test.menuTwo(),你可以把它放在while循环的下面,这样就不用在每个case语句后都调用一次test.menuTwo()啦。祝学习愉快~


  • 提问者 精慕门6573819 #1
    还有个问题,这个返回上一级操作怎么写,我这个无法返回上一级操作呢
    2018-07-27 11:07:26
  • Tender10 回复 提问者 精慕门6573819 #2
    返回上一级的操作,就是加一个case语句,检测到返回上一级的指令后,就调用一下上一级的菜单方法。
    2018-07-27 14:07:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师