购物车问题

购物车问题

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中呢

正在回答

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

1回答

1、首先你的TestDemo类在调用方法的使用,GoodsManage的对象不应该每次都new一个新的,这样的话,如果导入商品后,再去显示购物车中显示商品信息,会发现一个商品都没有,因此需要定义一个全局的GoodsManage对象。

2、关于购物车中的商品信息是地址的问题,因为购物车是使用HashMap存放数据的,而其value值是GoodsInCart类的对象,所以还需要进一步获取Goods类的对象才行,如果你的Goods类有toString()方法,那么直接it.next().getGoods()就可以输出商品信息了。

3、商品添加到map中并没有问题。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • qq_左撇子A_0 提问者 #1
    我也想过在ManAge中重写toString方法 但是显示购物车中添加的商品信息中回显示price, toString方法返回的是字符串 没法在return后面调用Goods中的prace的get方法
    2017-10-26 14:41:27
  • 好帮手慕珊 回复 提问者 qq_左撇子A_0 #2
    可以呀,字符串也是可以和其他数据类型连接到一起输出的,比如:“价格:"+getPrice()这样就是字符串了
    2017-10-26 15:02:36
  • qq_左撇子A_0 提问者 #3
    非常感谢!
    2017-10-26 20:13:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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