为什么一直显示商品编号输入错误
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("该数字没有对应的操作!");
}
}
}
}46
收起
正在回答
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是否为空,如果不为空就可以继续添加了。
祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星