麻烦老师帮忙看看添加购物车为什么空指针

麻烦老师帮忙看看添加购物车为什么空指针

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;
   }
   Map<String, GoodsInCart> map = new HashMap();
   Scanner aa=new Scanner(System.in);
   public void addGoodsToCart(GoodsManage gm){  //添加商品到购物车
	   gm.displayAllGoods();
	   Set<Goods> goods=gm.getGoods();
	   System.out.println("请输入要添加的商品编号");
	   String str=aa.next();
	   boolean flag=true;
           for(Goods g:goods){
		   if(str.equals(g.getGoodsId())){
			  flag=true; 		   	   
	   System.out.println("请输入要添加的商品数量");
	   int num=aa.nextInt();
	   GoodsInCart goodsInCart = new GoodsInCart(g, num);
       shoppingCart.put(str, goodsInCart);
       break;
		   }else{   
			  flag=false;
		   }
	   }
        if(!flag){
        	System.out.println("商品编号不存在!");
        }
   }
public class TestDemo {

	public static void main(String[] args) {
		GoodsManage gm=new GoodsManage();
		ShoppingCart sc=new ShoppingCart();
		Scanner hh=new Scanner(System.in);
		Boolean flag=false;
		int n=0;
		while(flag==false){					
		System.out.println("********************************");
		System.out.println("**主菜单**");
		System.out.println("1--商品管理");
		System.out.println("2--购物车");
		System.out.println("0--退出");
		System.out.println("********************************");
		System.out.println("请输入对应数字进行操作:");
		n=hh.nextInt();
		flag=true;
		if(n<0||n>2){
			System.out.println("输入错误,请重新输入");
			flag=false;
			continue;
		}else if(n==0){
				System.out.println("***欢迎您下次光临***");
				break;			
		}else{
		switch(n){
			case 1:
				while(flag==true){
		 System.out.println("********************************");
		 System.out.println("商品管理");
		 System.out.println("1--商品信息导入");
		 System.out.println("2--显示所有商品信息");
		 System.out.println("9--返回上一级菜单");
		 System.out.println("********************************");
		 System.out.println("请输入对应数字对商品进行管理:");
		 int i=hh.nextInt();
		 if(i!=1&i!=2&i!=9){
			 System.out.println("输入不正确,请重新输入!");
			 continue;
		 }else{
			 switch(i){
			 case 1:
				 gm.importGoods();
				 break;
			 case 2:
				 gm.displayAllGoods();
			     break;
			 
			 case 9:
				 flag=false;
				break;				
			 }
		 }
				}
			break;	
		  case 2:
		   while(flag=true){
		   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("请输入对应数字对购物车进行管理:");
		   n=hh.nextInt();
		   switch(n){
		   case 1: sc.addGoodsToCart(gm);
			   
		   }
			  }
				}
		}
		}
		
	}


}


正在回答

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

1回答

报错的贴出来吧,我刚才看了你的代码,没问题,可以运行。test应该也没问题。报空指针应该是你添加购物车然后报空指针吧?你检查一下GoodsInCart类看看。

  • 哈哈哈毛 提问者 #1
    代码没有报错了,就是添加完购物车后就报空指针,是goodsincart类什么问题呢?
    2018-07-21 19:37:26
  • 哈哈哈毛 提问者 #2
    private Goods goods; //商品信息 private int num; //商品数量 public GoodsInCart(){ } public GoodsInCart(Goods goods,int num){ this.setGoods(goods); this.setNum(num); } public Goods getGoods() { return goods; } public void setGoods(Goods goods) { this.goods = goods; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } }
    2018-07-21 19:42:26
  • Acolasia丶y 回复 提问者 哈哈哈毛 #3
    购物车类 private Map<String,GoodsInCart> shoppingCart改成private Map<String, GoodsInCart> shoppingCart = new HashMap<String, GoodsInCart>();
    2018-07-21 20:03:41
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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