2013-04-28 144 views
0

编译程序时我没有问题,但是当我尝试运行该程序时,我得到一个NullPointerException。我不知道为什么我有这个和如何摆脱这一点。Queue isEmpty疑难解答

错误是在这条线:

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

这只是类定义。你还可以包含你正在运行的单元测试或应用程序代码吗? – Horus 2013-04-28 22:22:59

+0

这里张贴的代码太多,所以我会设置一个链接来查看。 http://www.mediafire.com/?x2oaxmz1fb866 – Jaylon253 2013-04-28 22:28:12

回答

1

你想用这些行做一个构造函数吗?

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

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

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

另外,注意新客户[1 ]在你的“构造函数”中没有创建一个Customer对象,而是试图索引一个名为Customer的数组。

如果不是,则实例变量chairQueue不会被实例化。

然后,因为你没有一个合适的构造函数,你的实例变量chairQueue根本就没有被初始化。当您使用TheChair类的任何实例调用isEmpty()时,chairQueue本身为null。因此,在对语句chairQueue [0]进行求值的函数中,它试图对空对象(指针)建立索引,从而引发NullPointerException。

+0

你的答案是谢谢你的帮助。 – Jaylon253 2013-04-28 23:04:26