2015-05-09 43 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