Java 类似于战舰。如何使用这样的边框按降序打印?

Java 类似于战舰。如何使用这样的边框按降序打印?,java,multidimensional-array,Java,Multidimensional Array,所以我有一个我创建的程序,这是一个基于建筑中楼层和房间的游戏。二维数组的行和列的大小可以根据用户输入进行更改。我想做的是有一种方法,在用户每次猜测时打印出2D数组,类似于玩战舰 请注意,在图像中,左下角将为[0][0],因此阵列的打印需要从上到下进行。任何帮助都将不胜感激。PS:我已经有了一个用空格填充数组的方法,并且正如用户1或2猜测的那样,它用“1”或“2”填充数组中的元素 以下是一个屏幕截图: 到目前为止我所尝试的(这是用于打印的toString方法的一部分。必须返回字符串) publi

所以我有一个我创建的程序,这是一个基于建筑中楼层和房间的游戏。二维数组的行和列的大小可以根据用户输入进行更改。我想做的是有一种方法,在用户每次猜测时打印出2D数组,类似于玩战舰

请注意,在图像中,左下角将为[0][0],因此阵列的打印需要从上到下进行。任何帮助都将不胜感激。PS:我已经有了一个用空格填充数组的方法,并且正如用户1或2猜测的那样,它用“1”或“2”填充数组中的元素

以下是一个屏幕截图:

到目前为止我所尝试的(这是用于打印的toString方法的一部分。必须返回字符串)

public String toString() {
    String returnStr = "";
    for (int i = 0; i < this.myHidingPlaces.length; ++i) {
        if (i == this.myHidingPlaces.length - 1) {
            returnStr += this.myHidingPlaces[i][0] + "\n ";
            for (int j = 0; j < this.myHidingPlaces[i].length; ++j) {
                returnStr += this.myHidingPlaces[i][j] + " ";
            }
        } 
        else {
            returnStr += this.myHidingPlaces[i][0];
        }
    }
    return returnStr;
}
公共字符串toString(){
字符串returnStr=“”;
for(int i=0;i
按相反顺序运行高度循环:

public String toString() {
    String returnStr = "";
    for (int i = this.myHidingPlaces.length - 1; i >= 0; i--) {
        for (int j = 0; j < this.myHidingPlaces[i].length; j++) {
            returnStr += this.myHidingPlaces[i][j] + " ";
        }
        returnStr += "\n";
    }
    return returnStr;
}
公共字符串toString(){
字符串returnStr=“”;
对于(int i=this.myhidingsplaces.length-1;i>=0;i--){
对于(int j=0;j
首先,您可以创建一个
char[][]
来存储电路板。电路板的高度为1(顶行)+2*行数。电路板的宽度为1(此边线)+4*列数

int boardHeight = 1 + 2*myHidingPlaces.length;
int boardWidth = 1 + 4*myHidingPlaces[0].length;
char[][] board = new char[boardHeight][boardWidth];
让我们以干净的状态启动电路板;使每个
char
成为
'
空格字符

for(int i = 0; i < boardHeight; i++) {
    for(int j = 0; j < boardWidth; j++) {
        board[i][j] = ' ';
    }
}
每四列都是除第一行以外的所有
“|”
字符

for(int i = 1; i < boardHeight; i++) {
    for(int j = 0; j < boardWidth; j += 4) {
        board[i][j] = '|';
    }
}
最后将线路板逐行打印到屏幕上

for(int i = 0; i < boardHeight; i++) {
    System.out.println(String.valueOf(board[i]));
}
样本输出:

 ___________ 
|   |   |   |
|___|___|___|
|   |   | 1 |
|___|___|___|
|   |   |   |
|___|___|___|
|   |   |   |
|___|___|___|
| 2 |   |   |
|___|___|___|

让我们看看您尝试了什么,如果可能的话,是一个非常简洁的格式。
String#format
找到了,for.Or
System.out.printf
我编辑了它,以显示我尝试过的内容。我去掉了边框和其他内容,并不是因为它让人困惑。我想在添加所有边框和seperators@MadProgrammer我不太担心使用[0][0]了解如何设置表格格式以及如何按降序打印表格在左下角。所以,从垂直组的
.length-1
位置开始,一直到
0
我被否决是有原因的吗?这就像我在这个网站上的第四篇文章“不断被否决”。我觉得我表现得很专业,尽可能地清晰。@there没有任何帖子是应该被否决的问一个问题,并在适当的情况下,给出一个简单的代码示例,确切说明什么不起作用。这个问题确实问了很多问题;例如,翻转坐标可能与如何创建边界网格不同。如果问题过于突出,则与网站主题背道而驰。我们希望得到广泛适用的问题,以便对未来用户有用,而不仅仅是最初的提问者。@ThereIsNoSpoon只需不断提问。我不同意这里的所有标准,并不时受到反对票的打击:-)边界省略,因为OP评论说它们不是主要问题。
for(int i = 0; i < boardHeight; i++) {
    System.out.println(String.valueOf(board[i]));
}
int[][] myHidingPlaces = new int[][] {
        {2,0,0},
        {0,0,0},
        {0,0,0},
        {0,0,1},
        {0,0,0},
};
 ___________ 
|   |   |   |
|___|___|___|
|   |   | 1 |
|___|___|___|
|   |   |   |
|___|___|___|
|   |   |   |
|___|___|___|
| 2 |   |   |
|___|___|___|