2015-05-09 3 views
0

Класс предназначен для хранения стопки номеров комнат (то есть номеров, в которых останавливался гость отеля), и позволяет получить оставшуюся оставшуюся комнату (LIFO).NullPointerException встречается при добавлении объектов в ArrayDeque

На данный момент я просто хочу добавить элемент, но, похоже, не работает. Я мог бы использовать стек для этого, но я экспериментирую с ArrayDeque (поскольку он должен быть более гибким?).

В любом случае, при выполнении методы addRoom(), обеспечивающей целое число в качестве параметра, то ArrayDeque бросает NullPointerException на линии 14, где я использую AddFirst() или добавить() метода ArrayDeque.

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.

И не переопределяйте номер номера в конструкторе.

+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

Смежные вопросы