如何保留数组中的内容?

时间:2015-01-03 20:19:40

标签: java

此课程用于在游戏中存储和处理棋盘。

static class Board
    {
    boolean[][] array;

    private void reset()
    {
        array = new boolean[][]
            {
                {false, false, false},
                {false, false, false},
                {false, false, false}
            };
    }

    private void mark(int row, int col)
    {
        array[row][col] = true;
    }
}

这是主要方法。

public static void main(String args[])
{
    new Board().reset();
    new Board().mark(0,0);
}    

程序启动时,我使用reset方法初始化电路板。 然后,我使用“mark”将其中一个布尔值从false更改为true。

我在array[row][col] = true;得到一个空异常错误,因为该数组为空。

如何编辑代码以使数组不会变为null并且mark()可以正确地将值写入数组?

3 个答案:

答案 0 :(得分:3)

不要创建Board的两个实例。创建一个实例并在同一个isntance上调用这两个方法。

public static void main(String args[])
{
    Board board =  new Board();
    board.reset();
    board.mark(0,0);
}

为每个方法调用创建新的Board实例时,会对mark成员未初始化的实例执行array方法,从而导致NullPointerException

答案 1 :(得分:2)

这是因为您在mark的{​​{1}}新实例中调用Boardarray初始化为null值。您必须重用相同的实例来调用这两个方法:

public static void main(String args[]) {
    Board board = new Board();
    board.reset();
    board.mark(0,0);
}

答案 2 :(得分:0)

不要通过调用构造函数new Board()来创建新对象 每一次。只创建一个对象,然后重用它。似乎是 你的意图在这里。

Board obj = new Board();
obj.reset();
obj.mark(0,0);