在实例化的布尔数组上获取NPE

Mik*_*iar 1 java nullpointerexception

好吧,我已经得到了一个我无法弄清楚的NPE,这让我非常沮丧.我有一个预约对象的链表和一个二维的布尔数组来跟踪可用的座位:

class ResList
{
    private Reservation head;
    private boolean [][] seats;

    ResList()
    {
        head = null; //empty list
        boolean[][] seats = new boolean[5][25];
    }
Run Code Online (Sandbox Code Playgroud)

我还有一个方法isAvailable()来确定座位是否可用:

boolean isAvailable(int f, int s)
    {        
        if(f<0 || f>4 || s < 0 || s > 24)
            return false;
        else
            return !seats[f][s]; // this line throws the NPE
    }
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

jcbSeat = new JComboBox();        
        for(int i = start; i <= stop; i++)
        {        
            if(list.isAvailable(selectedFlight, i))
                jcbSeat.addItem(i+1);
        }
Run Code Online (Sandbox Code Playgroud)

我注意到了NPE.我在ResList构造函数中添加了一些调试行,并且可以访问seat [] []就好了,但是当我执行方法时,ka-boom:NPE.这里发生了什么?

小智 6

构造函数正在初始化局部变量seats,而不是实例变量seats.试试:

ResList()
{
   head = null; //empty list
   seats = new boolean[5][25];
}
Run Code Online (Sandbox Code Playgroud)