-3

我有一个二维字符数组board[row][col],旨在模拟 Xs 和 Os 游戏的游戏板。(作为参考,数组中的每个元素都是 X、O 或 ' ',表示在该方格中没有移动的空格。)

我正在尝试逐行获取数组中所有字符的字符串。也就是说,第一行将打印到字符串,然后第二行将附加到该字符串,直到遍历所有行。最后,结果应该看起来像这个游戏板的一串符号,例如“XXO X OOX”:

X X O
  X  
O O X

如何才能做到这一点?

4

6 回答 6

4

尝试:

StringBuilder str = new StringBuilder();
for (int i = 0; i < 3; i++)
 for (int j = 0; j < 3; j++)
   str.append(board[i][j]);

你可以找到更多关于StringBuilder 这里的数据。

于 2012-10-16T18:10:11.370 回答
2

我认为更好的解决方案是这样的

        char [][] board = new char[][]{{'x','x','o',},{'x',},{'o','o','x',}};

        StringBuilder builder = new StringBuilder();

        for (char[] aBoard : board) 
            builder.append(String.valueOf(aBoard)).append(" ");

       System.out.println(builder.toString());

出去

xxo x oox 
于 2012-10-16T18:13:11.543 回答
1

您可以尝试以下方法:

char[][] board = {{'X', 'O', 'X'}, {0, 'O', 0}, {'X', 'O', 'X'}};

String s = "";
for (char[] row : board) {
    for (char c : row)
        s += c == 0 ? " " : c;
    s += "\n";
}

System.out.println(s);

输出:

XOX  
 O   
XOX

编辑:如果您希望输出间隔,您可以使用

for (char[] row : board) {
    for (char c : row)
        s += c == 0 ? "  " : c + " ";
    s += "\n";
}

输出:

X O X 
  O   
X O X 
于 2012-10-16T18:11:23.903 回答
0

有这样的嵌套循环:

for (int i = 0; i < board.length; i++)
{
    for (int j = 0; j < board[0].length; j++)
    {
        System.out.print(board[i][j] + " ");
    }
    System.out.println();
}

第一个打印语句将把一行中的所有字符加在一起,然后在第二个循环之外的下一个打印语句将附加一个换行符。

于 2012-10-16T18:09:37.217 回答
0
  for(int i=0; i< board.length; i++){
     for(int j=0; i< board[i].length; j++){
        System.out.print(""+board[i][j]);  //<- use print() here
      }
      System.out.println(); //<- use println() here
  }
于 2012-10-16T18:10:33.450 回答
0
  String[][] board = {{"X", "X","O"},{" ", "X", " "},{"O", "O", "X"}};
  for(int i = 0; i < board.length; i++) {
        for(int j = 0; j < board[0].length; j++) {
            System.out.print(board[i][j] + " ");
        }
        System.out.println();
    }
于 2012-10-16T18:12:08.940 回答