为什么会出现空指针异常= =
public static void main(String[] args) {
GoodsManage goodsManage=new GoodsManage(new HashSet<Goods>());
goodsManage.importGoods();
goodsManage.displayAllGoods();
ShoppingCart shop=new ShoppingCart(new HashMap<String,GoodsInCart>());
shop.addGoodsToCart(goodsManage);
shop.displayAllInCart();
}
我已经实例化了GoodsManage 为什么后面调用还会出现空指针异常,请老师帮忙解答一下,谢谢
正在回答 回答被采纳积分+1
如下图所示,建议你在GoodsManager类中创建一个set集合,按下图修改就会在类加载的时候创建set集合,如果不创建set集合,只是声明set,那么在使用set集合的时候就会出现空指针异常,如果我的建议解决了你的问题,请采纳,祝学习愉快~

package com.imooc.marketManager;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class GoodsManage {
// 存放商品的容器
private Set<Goods> goodsSet;
public GoodsManage() {
}
public GoodsManage(HashSet<Goods> goodsSet) {
this.setGoodsSet(goodsSet);
}
public Set<Goods> getGoodsSet() {
return goodsSet;
}
public void setGoodsSet(Set<Goods> goodsSet) {
this.goodsSet = goodsSet;
}
public void importGoods() {
Goods one = new Goods("goods001", "水杯", 56, "不锈钢水杯");
Goods two = new Goods("goods002", "饮水机", 299, "带净化功能的饮水机");
Goods three = new Goods("goods003", "笔记本电脑", 4999, "15寸笔记本");
Goods four = new Goods("goods004", "手机", 2300, "android手机");
goodsSet.add(one);
goodsSet.add(two);
goodsSet.add(three);
goodsSet.add(four);
System.out.println("商品导入成功!");
}
public void displayAllGoods() {
if (goodsSet.isEmpty()) {
System.out.println("商品还未导入,请先导入商品信息");
} else {
Iterator<Goods> it = goodsSet.iterator();
System.out.println("所有商品信息");
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
}
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星