不能在Java中初始化2D对象数组

时间:2021-12-28 21:37:52

I'm trying to make a battleship game, for which I need a 2D array of squares, which are the places that a person can pick. When I run my program however, I get a null pointer exception when I try to call the resetBoard() function.

我想做一个战舰游戏,我需要一个二维的方块,这是一个人可以选择的地方。但是,当我运行程序时,当我尝试调用resetBoard()函数时,会得到一个空指针异常。

Battleship class:

战舰类:

public class Battleship
{
    private Square[][] squares;
    private boolean aircraftCarrierSunk;
    private boolean battleshipSunk;
    private boolean submarineSunk;
    private boolean patrolBoatSunk;
    private int boardSize;
    public int turns;

    public Battleship(int x)
    {
        squares = new Square[x][x];
//         for(int i = 0; i < boardSize; i++) //not sure if I need this
//         {
//             for(int j = 0; j < boardSize; j++)
//             {
//                 squares[i][j] = new Square();
//             }
//         }
        boardSize = x;
        aircraftCarrierSunk = false;
        battleshipSunk = false;
        submarineSunk = false;
        patrolBoatSunk = false;
    }

    public void resetBoard()
    {
        for(int i = 0; i < boardSize; i++)
        {
            for(int j = 0; j < boardSize; j++)
            {
                squares[i][j].setContents(0);
            }
        }
    }

Driver:

司机:

public static void main (String [] args)
{
    Battleship game = new Battleship(5);        // play on a 5 by 5 board

    System.out.println("Battleship!");
    System.out.println("-----------\n");

    for (int gameNumber = 1; gameNumber <= 2; gameNumber++)
    {
        game.resetBoard();

1 个解决方案

#1


6  

Got it- uncomment the lines in Battleship, and then move boardSize = x; above that for loop.

明白了——取消对战列舰线的注释,然后移动板子大小= x;上面这个for循环。

#1


6  

Got it- uncomment the lines in Battleship, and then move boardSize = x; above that for loop.

明白了——取消对战列舰线的注释,然后移动板子大小= x;上面这个for循环。