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