繁体   English   中英

我如何让这个板像我想要的那样打印出来

[英]How do I get this board to print out like I want it to

java 的总菜鸟,我有一个家庭作业,我需要制作一个自定义国际象棋游戏,但我什至在打印游戏板时遇到了困难,我正在尝试将所有空白空间与“X”一起使用。 我当前的“代码”:

public class Chess {

    public static void main(String[] args) {
        String[][] board = new String[7][7];
        fillBoard(board);


    }
    public static void fillBoard(String[][] board){
        for (int i = 0; i < 7; i++) {
            for (int j = 0; j < 7; j++) {
                board[i][j] = "X";
                System.out.print(Arrays.deepToString(board));
            }
            System.out.println();
        }
    }
}

它打印出来:这个

当我希望它打印出来时:这是

只需直接打印 position 的值即可。

 public static void fillBoard(String[][] board){
            for (int i = 0; i < 7; i++) {
                for (int j = 0; j < 7; j++) {
                    board[i][j] = "X";
                    System.out.print(board[i][j]);
                }
                System.out.println();
            }
        }

阅读您的评论后,我意识到这不仅仅是打印您关心的数组; 相反,您担心以后如何访问它。 注释中已经提供了打印不正确问题的解决方案,即替换System.out.print(Arrays.deepToString(board)); System.out.print("X"); . 我在这里解释另一部分(即以后如何访问它)以及一些有助于您设计应用程序的附加信息。

  1. 当您在某些方法中传递和更改数组时,调用方法的数组也将更改(检查以了解更多信息)。 这意味着当board[][]将在fillBoard中更改时,您将在main中获得更改后的board[][]
  2. 根据Single-responsibility 原则,模块/方法, fillBoard应该只做一件事,就是填满板子。 它也不应该做打印(额外的事情)。 您应该编写不同的打印方法。
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[][] board = new String[7][7];
        fillBoard(board);
        displayBoard(board);
    }

    static void fillBoard(String[][] board) {
        for (String[] row : board) {
            Arrays.fill(row, "X");
        }
    }

    static void displayBoard(String[][] board) {
        for (String[] row : board) {
            for (String cell : row) {
                System.out.print(cell);
            }
            System.out.println();
        }
    }
}

Output:

XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX

附加说明:

二维数组是一维 arrays 的数组,因此您可以通过多种方式编写上面给出的代码,例如

static void fillBoard(String[][] board) {
    for (int i = 0; i < board.length; i++) {
        Arrays.fill(board[i], "X");
    }
}

或使用增强for循环:

static void fillBoard(String[][] board) {
    for (String[] row : board) {
        Arrays.fill(row, "X");
    }
}

或不使用Arrays.fill

static void fillBoard(String[][] board) {
    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board[i].length; j++) {
            board[i][j] = "X";
        }
    }
}

类似地,方法displayBoard可以写成:

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

请注意,我使用board.lengthboard[i].length而不是7作为行数和7作为列数,以确保每次更改数组大小时都不必更改它.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM