java - 无法在 Java 中初始化二维对象数组

标签 java arrays object

我正在尝试制作一款战舰游戏,为此我需要一个二维正方形阵列,这是一个人可以选择的地方。但是,当我运行我的程序时,当我尝试调用 resetBoard() 函数时出现空指针异常。

战舰等级:

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);
            }
        }
    }

司机:

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();

最佳答案

知道了 - 取消注释 Battleship 中的行,然后将 boardSize = x; 移动到 for 循环之上。

关于java - 无法在 Java 中初始化二维对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617066/

相关文章:

java - 在 java 中重新排序 JTabbedPane 中的选项卡

javascript - jQuery:单击函数绑定(bind)在带有闭包修复的 for 循环中

c# - 防止 C# 子类覆盖方法

java - 使用 Dataflow 和 Java 删除 Firestore 集合

java - 为什么 HashMap.Entry 类有一个哈希字段?

arrays - 如何为 N 列做与 array_to_json(array_agg(tags.*)) 完全相同的事情

arrays - 查找两个多维数组之间的相似性(作为JSON文档)

javascript - 从 Javascript 对象数组计算 2 个对象键/列

java - 在 Spring Boot 中加载 schema.sql 文件时出现 SQL 语法错误

arrays - APL Dyalog 嵌套数组元素转换