为什么购物车每次只能存一条商品信息?
package com.imooc.javapor3;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
//购物车类
public class ShoppingCart {
private Map<String,GoodsInCart> shoppingCart;
public 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) {
System.out.println("购物车中的所有商品信息为:");
gm.displayAllGoods();
Iterator<Goods> it = gm.getGoodsSet().iterator();
System.out.println("请输入要添加的商品编号:");
Scanner sc = new Scanner(System.in);
String goodsid = sc.nextLine();
while(it.hasNext()) {
Goods good = it.next();
if(good.getGoodsId().equals(goodsid)){
System.out.println(good);
System.out.println("请输入商品数量:");
int goodsnum = sc.nextInt();
GoodsInCart goodsincart = new GoodsInCart(good,goodsnum);
this.shoppingCart.put(good.getGoodsId(), goodsincart);
System.out.println("商品添加成功!");
}
}
}
//修改购物车中的商品数量
public void updateNumInCart() {
}
//显示购物车中的所有商品
public void displayAllInCart() {
Iterator<Map.Entry<String, GoodsInCart>> it = this.shoppingCart.entrySet().iterator();
if(it.hasNext()) {
while(it.hasNext()){
System.out.println( it.next().getValue().getGoods().getGoodsName() + ",数量: " + it.next().getValue().getNum() );
}
}else {
System.out.println("购物车是空的哦,快去添加商品吧!");
}
}
//结算
public void settleAccounts() {
}
}
//分割---------------------
package com.imooc.javapor3;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TestDemo {
public static void main(String[] args){
//测试Goods类和GoodsManage类
// Set set = new HashSet();
// GoodsManage gm = new GoodsManage(set);
// gm.importGoods();
// gm.displayAllGoods();
// Scanner sc = new Scanner(System.in);
// t.Menu();
// int a = sc.nextInt();
//Iterator it = gm.getGoodsSet().iterator();
TestDemo t = new TestDemo();
//
Set<Goods> set = new HashSet<Goods>();
GoodsManage gm = new GoodsManage(set);
GoodsInCart go = new GoodsInCart();
ShoppingCart sh = new ShoppingCart();
Map<String,GoodsInCart> shoppingCart = new HashMap<String,GoodsInCart>();
sh.setShoppingCart(shoppingCart);
//主循环结构
boolean flag = true;
while(flag) {
t.Menu();
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
switch(a) {
case 1: t.GoodsMenuwhile(gm);
break;
case 2: if(gm.getGoodsSet().size() == 0) {
System.out.println("商品信息还未导入!");
break;
}else{
t.CartMenuwhile(gm,sh);
break;
}
case 0:flag=false;
sc.close();
System.out.println("谢谢使用!");
System.exit(0);
break;
default:System.out.println("输入操作数不合理,请重新输入!");
}
}
}
//主菜单
public 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 void GoodsMenu() {
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 GoodsMenuwhile(GoodsManage gm) {
Iterator<Goods> it = gm.getGoodsSet().iterator();
boolean flag1 = true;
while(flag1) {
GoodsMenu();
Scanner sc1 = new Scanner(System.in);
int a1 = sc1.nextInt();
switch(a1) {
case 1:gm.importGoods();
it=gm.getGoodsSet().iterator();
break;
case 2:if(it.hasNext()) {
gm.displayAllGoods();
}else{
System.out.println("商品信息未导入,请先导入");
}
break;
case 9:flag1 =false;
break;
default : System.out.println("输入操作数不合理,请重新输入");
break;
}
}
}
//购物车管理菜单
public void CartMenu() {
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 CartMenuwhile(GoodsManage gm,ShoppingCart sh) {
boolean flag2 = true;
while(flag2) {
CartMenu();
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
switch(a) {
case 1: sh.addGoodsToCart(gm);
break;
case 2:break;
case 3:sh.displayAllInCart();
break;
case 4:break;
case 9: flag2 = false;
break;
default : System.out.println("输入操作数不合理,请重新输入!");
break;
}
}
}
}32
收起
正在回答
2回答
嗯。。。好吧。你的添加商品方法是没有问题的,应该是显示商品信息的方法存在问题。显示信息:获取shoppingCart的keySet集合,然后对其进行遍历,并取得Goods 的值并打印。你可以尝试完成以下,如果有问题的话,建议你把全部代码贴出来,方便准确的定位你的问题。祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星