所以我正在尝试编写一种在游戏中填充棋盘的方法。我刚刚开始学习编程,所以我对特殊方法知之甚少。
public static void Board(char[][] array){
for(int i=0; i<2*array.length+1; i++) {
if(i %2 ==0){
for(int j=0; j<2*array.length+1;j++){
if(j%2==0){
System.out.print("+");
}
else{
System.out.print("-");
}
}
}
else {
for(int j=0; j<2*array.length+1;j++){
if(j%2==0){
System.out.print("|");
}
else{
System.out.print(" "); // Maybe should use this spot to insert the x and o from the array.
}
}
}
System.out.println();
但是在董事会中,我目前有空位,我希望能够接受输入。
例如,如果
char [][] b={{'',' x',' ',},{' ','s','t '},{'o','o',' '}};
Board(a);
然后我不想只有空格,而是希望对应于数组的元素去那里。我在我的代码上标记了我认为可能会这样做的地方。我不知道任何特殊的方法,但可能 DeepArray 到字符串等。 我理解如何使用Arrays.ToString导入,问题在于索引。
答案 0 :(得分:1)
作为mentioned in a comment,你几乎就在那里:
将print(" ")
替换为print(array[i/2][j/2])
。
然后,在修复调用方法的两行代码中的错误后,将使代码打印正确输出:
char[][] b={{' ','x',' '},
{' ','s','t'},
{'o','o',' '}};
Board(b);
输出
+-+-+-+
| |x| |
+-+-+-+
| |s|t|
+-+-+-+
|o|o| |
+-+-+-+
要跟进comment by @markspace,您的代码可以简化为:
public static void printBoard(char[][] board) {
StringBuilder line = new StringBuilder();
for (int i = 0; i < board[0].length; i++)
line.append("+-");
String rowSeparatorLine = line.append('+').toString();
System.out.println(rowSeparatorLine);
for (char[] row : board) {
line.setLength(0); // clear
for (char cell : row)
line.append('|').append(cell);
System.out.println(line.append('|').toString());
System.out.println(rowSeparatorLine);
}
}
代码使用StringBuilder
在打印之前在内存中构建整行,例如所以它只需要构建一次行分隔符行。
它还使用增强的for
循环来保持代码更简单。
我还修改了方法名称。 Java命名约定是方法名称以小写字母开头,通常应该以动词开头,因为该方法实际上是为了做某事。