Для моего курса Computer Science мы создаем программу, имитирующую бизнес-торговый автомат. Все, кажется, не имеют каких-либо ошибок, но затем эта строка в драйвере работает,Tricky NullPointerException
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
код:
public boolean addItem(VendingMachineItem item)
{
if((item instanceof Snack) && (inventory.size() < maxCapacity))//error on this line
{
inventory.add(item);
return true;
}else{
return false;
}
}
Я не могу понять, в чем проблема, может ли кто-нибудь мне помочь?
Что такое 'inventory'? Покажите нам, где это объявлено. – TNT
Почему бы не использовать отладчик, или если у вас его нет, вставьте инструкции println, чтобы выгрузить значения перед этим оператором. Предполагая, что вы правильно определили строку, скорее всего 'inventory' имеет значение null. –
Как правило, я настоятельно рекомендую префикс любых переменных экземпляра, которые вы ссылаетесь на 'this.'. Это делает очевидным, что переменные являются переменными экземпляра, и это снижает риск ошибок из-за затенения. – jpmc26