当编译程序时我没有问题,但是当我尝试运行程序时,我得到一个NullPointerException。我不知道为什么我有这个以及如何摆脱这个。
错误在这一行:
public boolean isEmpty(){
代码:
public class TheChair {
private Customer[] chairQueue = null;
public void TheChair(){
chairQueue = new Customer[1];
}
public void enchairQueue( Customer newItem){
if(chairQueue[0] == null){
chairQueue[0] = newItem;
}
else{
System.out.println("The chair is full.");
}
}
public void dechairQueue(){
System.out.println(chairQueue[0].getName() + " has left");
chairQueue[0] = null;
}
public boolean isEmpty(){
if(chairQueue[0] == null){
System.out.println("The Barber's chair is empty");
System.out.println();
return true;
} else{
System.out.println("The Barber's chair is filled by: ");
System.out.println(chairQueue[0].getName());
return false;
}
}
我不确定如何解决这个问题,这只是程序代码的一小部分。
答案 0 :(得分:1)
您是否尝试使用这些行创建构造函数?
public void TheChair(){
chairQueue = new Customer[1];
}
如果是,那么这是错误的代码,因为构造函数没有返回类型,应编码为:
public TheChair(){
chairQueue = new Customer(1);
}
另请注意,“构造函数”中的 new Customer [1] 不会生成Customer对象,而是会尝试索引名为Customer的数组。
如果不是,则它是相同的,因为实例变量chairQueue无论如何都没有实例化。
然后,由于您没有合适的构造函数,因此您的实例变量chairQueue根本没有初始化。当您使用TheChair类的任何实例调用isEmpty()时,chairQueue本身为null。因此,在评估语句 chairQueue [0] 时的函数中,它正在尝试索引一个抛出NullPointerException的空对象(指针)。