好的,所以我遇到了一些生成空指针异常的代码的问题,这意味着我的代码正在尝试在应该使用对象的地方使用空值(直接来自 API)。我正在做的是我有一个名为 Hotel 的类,它有一个构造函数,它将一个字符串值分配给一个变量并创建一个 Room 类型的数组,一个对象。我知道这应该是直截了当的,但对于我的生活,我无法弄清楚这一点。
我会尽量保持代码尽可能简约:
对象 Hotel 的构造函数,它创建一个大小为 NUM_ROOMS 的新数组
这是包含的更新,不幸的是我仍然遇到空指针问题
public Hotel(String hotelName)
{
name = hotelName;
theRoom = new Room[NUM_ROOMS];
}
此构造函数创建一个 Room 类型的数组,其参数分配给变量
public Room(String guestName, int partySize, int bedCountRequired,
double ratePerDay, int daysStaying)
{
guest = guestName;
number = partySize;
numBeds = bedCountRequired;
rate = ratePerDay;
numOfDays = daysStaying;
}
以下方法应该:
1) 使用提供的参数创建对象 Room 的新实例
2) 在索引 roomsRented 处为该实例分配一个数组引用(在代码第一次初始化时定义为零,然后增加一)
public void addReservation(String guestName, int partySize,
int bedCountRequired, double ratePerDay, int daysStaying)
{
Room roomHolder = new Room(guestName, partySize, bedCountRequired,
ratePerDay, daysStaying);
theRoom[roomsRented] = roomHolder;
roomsRented++;
}
我遇到的问题是
theRoom[roomsRented] = roomHolder;
似乎导致空指针异常。尽管我在上述方法中使用了数组变量 theRoom,但我也从 Eclipse 收到错误消息。这使我相信我没有正确引用该对象。但是,我不知道为什么该引用不正确,即使我在 theRoom[0] 中替换,编译器仍然给我一个空指针。我没有看到我的数组构造有任何问题,这对我来说意味着唯一可能导致空指针异常的问题是如果我没有引用数组中的任何值。
有什么想法吗?
如果答案非常简单,请提前感谢您的任何贡献和道歉。
编辑*** 感谢您的帮助,找不到变量的问题已经解决,但是每次我尝试引用数组中的对象时,我仍然得到一个空指针异常。这是我如何尝试引用数组的示例:
public double getTotalRentalSales()
{
// Iterate through the array
for (int i = 0; i < theRoom.length; i++)
{
// sum the amount money received per rental
totalRate = totalRate + theRoom[i].getRate();
}
// Return total
return totalRate;
}
其中 getRate() 是从对象 Room 返回可变速率的方法
totalRate = totalRate + theRoom[i].getRate();
在这种情况下导致空指针。我的对象引用有问题吗?