为什么购物车每次只能存一条商品信息?

为什么购物车每次只能存一条商品信息?

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;
		   }
		   
		   
		   
	   }
	   
   }
}


正在回答

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

2回答

嗯。。。好吧。你的添加商品方法是没有问题的,应该是显示商品信息的方法存在问题。显示信息:获取shoppingCart的keySet集合,然后对其进行遍历,并取得Goods 的值并打印。你可以尝试完成以下,如果有问题的话,建议你把全部代码贴出来,方便准确的定位你的问题。祝学习愉快~

  • Bye白夜 提问者 #1
    确实是我的遍历方法出现了问题,已经解决,谢谢老师
    2017-11-14 18:58:15
一叶知秋519 2017-11-14 11:20:38

你好,根据作业要求,每次存一条数据是可以的。祝学习愉快~

  • 提问者 Bye白夜 #1
    老师我的意思是我的购物车只能存下最新选择的商品信息,没有做到可以存储多件不同的商品。。。
    2017-11-14 11:29:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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