내 컴퓨터 과학 과정에서는 자동 판매기 비즈니스를 시뮬레이트하는 프로그램을 만들고 있습니다.까다로운 NullPointerException
VendingMachine pv0001 = new SnackMachine(19.00);
pv0001.addItem(new Chips("Doritos"));
그것은 분명히이 경우 선언문 SnackMachine
코드의 선언에 따른되고이 오류
Exception in thread "main" java.lang.NullPointerException
at SnackMachine.addItem(SnackMachine.java:35)
at Driver.main(Driver.java:9)
에게 반환, 모든 오류를하지 보인다, 그러나 다른 드라이버에서이 줄을 실행합니다 :
public boolean addItem(VendingMachineItem item)
{
if((item instanceof Snack) && (inventory.size() < maxCapacity))//error on this line
{
inventory.add(item);
return true;
}else{
return false;
}
}
나는 문제가 무엇인지 파악할 수없는 것 같습니다. 아무도 도와 줄 수 있습니까?
'인벤토리'란 무엇입니까? 선언 된 곳을 알려주십시오. – TNT
왜 디버거를 사용하지 않거나 디버거가없는 경우 println 문을 삽입하여 해당 문 앞에 값을 덤프합니다. 행을 올바르게 식별했다고 가정하면,'inventory'는 null입니다. –
버릇의 문제로, 나는 당신이 참조하는 인스턴스 변수에'this '를 접두어로 붙이는 것을 강력히 추천한다. 변수가 인스턴스 변수이므로 분명한 것은 그림자로 인한 버그 위험을 낮 춥니 다. – jpmc26