2015-05-09 72 views
0

該課程旨在保存一堆房間號碼(即賓館客人入住的房間)並允許檢索最後一個入住房間(LIFO)。將對象添加到ArrayDeque時遇到NullPointerException

現在,我只想添加一個項目,但似乎沒有工作。我可以爲此使用堆棧,但是我正在嘗試使用ArrayDeque(因爲它應該更靈活?)。

無論如何,執行提供的整數作爲參數addRoom()方法時,ArrayDeque其中I使用addfirst僅()的add()ArrayDeque的方法拋出線14上一個NullPointerException。

import java.util.ArrayDeque; 

public class RoomNumbers 
{ 
    private ArrayDeque<Integer> roomNumbers; 

    public RoomNumbers() 
    { 
     ArrayDeque<Integer> roomNumbers = new ArrayDeque<Integer>(); 
    } 

    public void addRoom(int roomNumber) 
    { 
     roomNumbers.addFirst(roomNumber); 
    } 
} 

我不明白它可以抱怨,當我明確提供一個整數值時,整數是空的。請協助。

+0

這是非常有益的,謝謝:) – AK83

回答

0

您的構造函數RoomHistory與您的類RoomNumbers不匹配,因此roomNumbers實例未初始化,導致引發NullPointerException。

而且不要在構造函數中重新聲明roomNumbers。

+0

德,感謝您的答覆。 在將類構造函數與類名匹配後,在同一行仍然遇到相同的錯誤。 – AK83

0
public class RoomNumbers { 
     private ArrayDeque<Integer> roomNumbers; 

     public RoomNumbers() 
     { 
      roomNumbers = new ArrayDeque<Integer>(); 
     } 

     public void addRoom(int roomNumber) 
     { 
      roomNumbers.addFirst(roomNumber); 
     } 

    public static void main(String[] args) { 
     RoomNumbers roomNumbers = new RoomNumbers(); 
     roomNumbers.addRoom(1); 
    } 
} 

the difference between local and global variables in java