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循环。