为什么我不能打印我的2D阵列?

时间:2016-07-23 22:16:53

标签: java arrays 2d

开展Tic Tac Toe游戏。

我一直在努力找出打印2D阵列的正确方法。这是我目前正在研究的方法。试图打印板内的元素(或值,等等)。这里有什么问题?

// display board indicating positions for token (x, o) placement 

public void printBoard(int size) {
    int col, row; 

    for (col = 0; col < size; col++)
        System.out.print("   " + col); 
        for (row = 0; row < size; row++) {
            System.out.print("\n" + row);
            System.out.print(" " + board[col][row] + "|");
            System.out.print(" _ _ _ _ _ _");
        }
}

2 个答案:

答案 0 :(得分:1)

假设大小为board.length,问题在于内部for循环中的条件逻辑。 board.length只是二维数组中的行数。因此,除非行数等于列数,否则您的代码将无效。 2d数组中的列数等于2d数组中特定数组或行中的元素数,可以写为board [i] .length(i是从0到board.length - 1的数字)。所以我会更新你的方法以接受两个参数,而不是一个,

public void printBoard(int rows, int columns) {

    for (int i = 0; i < columns; i++){
        System.out.print("   " + i); 
        for (j = 0; j < rows; j++) {
            System.out.print("\n" + j);
            System.out.print(" " + board[j][i] + "|");
            System.out.print(" _ _ _ _ _ _");
        }
    }
}

然后当你在任何地方调用方法时,

printBoard(board.length, board[0].length);

注意,只有当2d数组具有相同大小的列时,上述操作才有效。

编辑:确保您的嵌套for循环使用大括号{}正确格式化,因为您的外部for循环缺少一对大括号。

答案 1 :(得分:0)

您忘了给{} for循环。当一个循环有多行时,你必须用{}

括起这些语句
 public void printBoard(int size) {
        int col, row; 

        for (col = 0; col < size; col++){//here starts {
            System.out.print("   " + col); 
            for (row = 0; row < size; row++) {
                System.out.print("\n" + row);
                System.out.print(" " + board[col][row] + "|");
                System.out.print(" _ _ _ _ _ _");
            }
        }// here ends }
    }