猿问

用Java打印对象的二维数组?

我正在开始一个简单的项目,用户在其中对着计算机播放一个版本的战舰。我现在想简单地打印出游戏板。但是,在将板初始化为由网格单元组成的二维对象数组后,我遇到了错误。代码没有打印我在类中定义的单元格类型,而是简单地打印了一个“null”网格。非常感谢这里的任何帮助。


public class main {


    public static void main(String[] args) {

        // TODO Auto-generated method stub


        grid[][] gameBoard = new grid[9][9];


        for (int x = 0; x < 9; x++) {

            for (int y = 0; y < 9; y++) {

                System.out.print(gameBoard[x][y] + " ");

            }

            System.out.println("");

        }


    }


}


public class grid {


    public String type;

    public String owner;

    public boolean positionCalled;


    public grid() {

        type = "_";

        owner = "";

        positionCalled = false;

    }


    public String toString() {

        return type;

    }


}


米脂
浏览 189回答 3
3回答

12345678_0001

您只创建了数组,而没有在其中创建单个单元格。为此,在您的循环中:gameBoard[x][y]&nbsp;=&nbsp;new&nbsp;grid();

月关宝盒

你必须初始化你的grid,for (int x = 0; x < 9; x++) {&nbsp; &nbsp; for (int y = 0; y < 9; y++) {&nbsp; &nbsp; &nbsp; &nbsp; gameBoard[x][y]=new grid();//initialize the grid&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(gameBoard[x][y] + " ");&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println("");}

繁星淼淼

那是因为您在初始化后忘记初始化 2d 网格数组对象。添加这行代码:for (int i = 0; i < 9; i++)&nbsp; &nbsp; for (int j = 0; j < 9; j++)&nbsp; &nbsp; &nbsp; &nbsp; gameboard[i][j] = new grid();
随时随地看视频慕课网APP

相关分类

Go
我要回答