开展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(" _ _ _ _ _ _");
}
}
答案 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 }
}