访问数组元素时出现NullPointerException

时间:2014-03-27 02:05:17

标签: java

我使用BlueJ创建一个数组。该数组是从另一个类继承的10个对象。

现在,我的问题是,每当我尝试在数组中找到一个对象时(使用findInventoryItem,我都会收到java.lang.NullPointerException: null错误。现在" inventoryItem"对象来自另一个类。我使用inventoryItems作为实际的数组名称。进入它的对象是类inventoryItem的{​​{1}}

InventoryItem

}

2 个答案:

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