棘手的NullPointerException

时间:2015-01-23 00:29:07

标签: java if-statement nullpointerexception boolean

对于我的计算机科学课程,我们正在制作一个模拟自动售货机业务的程序。一切似乎没有任何错误,但随后驱动程序中的这一行运行,

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

我似乎无法弄清问题是什么,有人可以帮助我吗?

3 个答案:

答案 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."); }

库存似乎也没有被宣布,我假设您必须将其作为全局变量,否则这也可能导致问题。