0

编译程序时我没有问题,但是当我尝试运行程序时,我得到一个 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;
        }
    }

我不确定我应该如何解决这个问题,这只是程序代码的一小部分。

4

1 回答 1

1

您是否尝试使用这些行创建构造函数?

public void TheChair(){
    chairQueue = new Customer[1];
}

如果是,那么这是错误的代码,因为构造函数没有返回类型,应该编码为:

public TheChair(){
    chairQueue = new Customer(1);
}

另外,请注意“构造函数”中的new Customer[1]不会创建 Customer 对象,而是尝试索引名为 Customer 的数组。

如果不是,则相同,因为无论如何都没有实例化实例变量chairQueue。

然后,由于您没有适当的构造函数,因此您的实例变量 chairQueue 根本没有初始化。当您使用 TheChair 类的任何实例调用 isEmpty() 时,chairQueue 本身为空。因此,在评估语句chairQueue[0]的函数中,它试图索引一个空对象(指针),这会引发 NullPointerException。

于 2013-04-28T22:29:55.303 回答