【发布时间】:2021-06-16 06:14:20
【问题描述】:
我目前正在使用 2D 数组,虽然我发现它们使用起来很简单,但我经常面临为它们创建边框和处理它的步骤的挑战。例如,我正在重做一个用 python 制作的 Battleship 游戏。 python版本没有边框,但是java版本我想挑战一下。
我尝试在初始化板的方法中创建边框,但是当我在 main 方法中调用板时会导致格式问题。现在我正在使用嵌套的 for 循环处理 main 中的边框,虽然结果变得更好,但边框仍然不完整。我正在尝试创建我在网上找到的这个边框:
+---+
| |
+---+
但我没有成功。这是我的代码:
public static String[][] Battlefield() {
int row;
int col;
int cap_start = 65;
//Makes board
String[][] BattleBoard = new String[11][11];
for (row = 0; row < BattleBoard.length; row++) {
for (col = 0; col < BattleBoard[row].length; col++) {
if (row == 0) {
//System.out.print(
// " " + Character.toString((char) cap_start) + " ");
BattleBoard[row][col] =
" " + Character.toString((char) cap_start) + " ";
cap_start++;
} else if (col == 0) {
//Gives us 0-9
//System.out.print(Integer.toString(row - 1) + " ");
BattleBoard[row][col] = (Integer.toString(row - 1)) + " ";
} else {
//System.out.print(" ");
BattleBoard[row][col] = " ";
}
}
}
return BattleBoard;
}
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
Scanner colInput = new Scanner(System.in);
Scanner rowInput = new Scanner(System.in);
String player_col = "";
String player_row = "";
String[][] gameBoard = Battlefield();
for (int row = 0; row < gameBoard.length; row++) {
for (int col = 0; col < gameBoard[row].length; col++) {
System.out.print(gameBoard[row][col] + " |");
if (row <= gameBoard.length - 1)
System.out.print("+---+");
}
System.out.println();
}
}
【问题讨论】:
-
为什么网格上的每个点都需要 5 个字符(“+---+”)?一个点要么是空白(水),要么是一艘船的一部分,要么是一个射击过的地方。通常,您使用二维 int 数组或 char 数组创建网格模型。当你在控制台上显示它时,你将它转换为字符串。
标签: java arrays string multidimensional-array ascii-art