对于我的计算机科学课程,我们正在制作一个模拟自动售货机业务的程序。一切似乎没有任何错误,但随后驱动程序中的这一行运行,
VendingMachine pv0001 = new SnackMachine(19.00);
pv0001.addItem(new Chips("Doritos"));
它会返回此错误
Exception in thread "main" java.lang.NullPointerException
at SnackMachine.addItem(SnackMachine.java:35)
at Driver.main(Driver.java:9)
这显然是源于SnackMachine
代码声明此if语句:
public boolean addItem(VendingMachineItem item)
{
if((item instanceof Snack) && (inventory.size() < maxCapacity))//error on this line
{
inventory.add(item);
return true;
}else{
return false;
}
}
我似乎无法弄清问题是什么,有人可以帮助我吗?
答案 0 :(得分:1)
您是否初始化了inventory
?
答案 1 :(得分:0)
确保初始化inventory
对象时初始化VendingMachine
。
答案 2 :(得分:0)
NullPointer在声明变量但未创建对象时发生异常,因此它指向null。要避免这种类型的异常检查为null,如果你没有创建自己的对象。
public boolean addItem(VendingMachineItem item)
{ if( item == null )System.out.println("Item passed in must equal to null."); }
库存似乎也没有被宣布,我假设您必须将其作为全局变量,否则这也可能导致问题。