我使用BlueJ创建一个数组。该数组是从另一个类继承的10个对象。
现在,我的问题是,每当我尝试在数组中找到一个对象时(使用findInventoryItem
,我都会收到java.lang.NullPointerException: null
错误。现在" inventoryItem"对象来自另一个类。我使用inventoryItems
作为实际的数组名称。进入它的对象是类inventoryItem
的{{1}}
InventoryItem
}
答案 0 :(得分:0)
inventoryItems[random.nextInt(9 - 0 + 1) + 0] = inventoryItem;
如果用上面的行初始化数组,你如何确保数组的所有元素都被初始化?它生成一个随机数,并不保证0到9之间的所有元素都被初始化。
请记住这一行:
inventoryItems = new InventoryItem[10];
您正在初始化数组,而不是其元素。当再次运行每个数组元素的函数时,您应该确保已经初始化了元素本身。
例如:
InventoryItem[i].getPartNumber()
这行代码应该在
之前执行 InventoryItem[i] = new InventoryItem();
答案 1 :(得分:0)
正如@Jahoy所提到的,你正在访问的数组中的元素很可能是空的。首先必须检查元素是否存在。
我认为你的FindInventoryItem函数应该是这样的:
public InventoryItem findInventoryItem(int partNumber)
{
for(int index = 0; index < 9; index ++)
{
InventoryItem tempItem = inventoryItems[index]; // ADD THIS LINE HERE
if(tempItem != null)
{
if (tempItem.getPartNumber() == partNumber)
{
return tempItem;
}
if (tempItem.getPartNumber() != partNumber)
{
System.out.println("The entry " + partNumber + " does not exist. Please try again.");
}
}
}
// at this stage you've got no result, I dont really know what you want to return
return inventoryItem;
}