为什么一直显示商品编号输入错误

为什么一直显示商品编号输入错误

import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

//购物车类
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();
			Iterator<Goods> it = gm.getGoodsSet().iterator();
			while (it.hasNext()) {
				System.out.println(it.next());
			}
			System.out.println("请输入要添加的商品编号:");
			String key = sc.next();
			Goods gd = null;
			it = gm.getGoodsSet().iterator();
			while (it.hasNext()) {
				gd = (Goods) it.next();
				if (gd.getGoodsId().equals(key)) {
					System.out.println("请输入要添加的商品数量:");
					int value = sc.nextInt();
					GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value);
					shoppingCart.put(key, goodsInCart);
					break;
				} else {
					System.out.println("商品编号输入错误!");
					break;
				}
			}
			// System.out.println("请输入要添加的商品数量:");
			// int value = sc.nextInt();
			// for (Goods goodsTmpe : gm.getGoodsSet()) {
			// GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value);
			// shoppingCart.put(key, goodsInCart);
			// }
		}
	}

	// 修改购物车中的商品数量
	public void updateNumInCart() {

	}

	// 显示购物车中的所有商品
	public void displayAllInCart() {
		System.out.println("显示购物车中的所有商品信息");
		if (shoppingCart.values().size() == 0) {
			System.out.println("购物车是空的,赶快装满吧!");
		} else {

			Iterator<GoodsInCart> it = shoppingCart.values().iterator();
			while (it.hasNext()) {
				System.out.println(it.next());
			}
		}
	}

	// 结算
	public void settleAccounts() {

	}
}
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

//测试类

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("请输入对应的数字对购物车进行管理");
	}

	GoodsManage goodsmanage = new GoodsManage(new HashSet<Goods>());

	// 商品信息管理部分的逻辑代码
	public void manage_Menu_Code() {
		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(goodsmanage);// 添加商品到购物车
				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;
		TestDemo test = new TestDemo();
		ShoppingCart shoppingCart = new ShoppingCart(new HashMap<String, GoodsInCart>());
		while (b) {
			menu();// 调用猪菜单
			menuNum = sc.nextInt();
			switch (menuNum) {
			case 1:
				goodsManageMenu();
				test.manage_Menu_Code();
				break;
			case 2:
				shoppingCartMenu();
				test.cart_Menu_Code(shoppingCart);
				break;
			case 0:
				b = false;
				break;
			default:
				System.out.println("该数字没有对应的操作!");
			}

		}
	}
}


正在回答

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

2回答

你的这段代码有问题:

while (it.hasNext()) {
                gd = (Goods) it.next();
                if (gd.getGoodsId().equals(key)) {
                    System.out.println("请输入要添加的商品数量:");
                    int value = sc.nextInt();
                    GoodsInCart goodsInCart = new GoodsInCart(new Goods(), value);
                    shoppingCart.put(key, goodsInCart);
                    break;
                } else {
                    System.out.println("商品编号输入错误!");
                    break;
                }
            }

每输入一次,就只能判断一个商品库中的商品。

建议使用for (Goods goods1 : gm.getGoodsSet())这句代码对商品库中商品进行遍历,如果goods1与用户输入的一致,就赋值给gd;在for循环外,判断gd是否为空,如果不为空就可以继续添加了。

祝学习愉快~

没有马甲线的安琪拉 2017-10-27 18:43:28

。。。。。代码也不全,也不知道你是做了什么操作才报错。。。。

  • 提问者 qq_左撇子A_0 #1
    就是 我添加商品购物车 输入正确的商品编号也会显示商品编号输入错误
    2017-10-27 18:50:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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