队列是空的故障排除

时间:2013-04-28 22:03:51

标签: java queue

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

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

1 个答案:

答案 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的空对象(指针)。