2013-04-28 51 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