gpt4 book ai didi

java - toString 方法用 2D boolean 数组打印游戏板

转载 作者:行者123 更新时间:2023-12-02 01:35:57 25 4
gpt4 key购买 nike

我正在尝试编写一个 toString 方法,该方法将采用 2D boolean 数组并打印出“x”或“_”,具体取决于它们是 true 还是 false (已随机初始化)。然而,每次我去打印板时,我都会返回一个内存地址,并且我认为它不会进入我的 toString ,我相信我正确地覆盖了该方法。我在下面发布了我的代码以及我想要的格式结果的示例。任何帮助将不胜感激。

public static boolean[][] randomize() {

//Initializes random
Random random = new Random();

for (int row = 0; row < board.length; row++) {
for (int col = 0; col < board[row].length; col++) {
board[row][col] = random.nextBoolean();
}
}

return board;
}
@Override
public String toString() {
String result = "";

for (int i = 0; i < board.length; i++) {
System.out.print(i);
result += i;
}
result += "\n";
System.out.println();

for (int row = 0; row < board.length; row++) {
System.out.print(row);
result += row;
for (int col = 0; col < board[row].length; col++) {
if (board[row][col] == false) {
System.out.print("_");
result += "_";
}
else if (board[row][col] == true) {
System.out.print("X");
result += "X";
}
}
System.out.println();
result += "\n";
}

return result;
}

public void play() {
currentStatus = GameState.IN_PROGRESS;
DuoPlayPlayer currentPlayer = playerOne;

//Creates and Prints the Board
boolean[][] board = LightsOut.randomize();
System.out.println(board);
System.out.println(currentPlayer.getName() + " it is your turn!");
}

最佳答案

这里

boolean[][] board = LightsOut.randomize();
System.out.println(board);

您正在尝试打印板,但板实际上是原始 boolean 值的二维数组。您重写的 toString() 方法将适用于重写了 toString() 方法的类的对象。如果将数组类型的变量传递给 System.out.println 方法,它将打印它们的地址。

如果您确实想打印 boolean 板,请考虑使用 Arrays.toString()循环中的方法 - 因为此方法仅适用于一维数组。如果您想使用此方法打印二维数组,您将获得第二维的数组地址。或者考虑使用Arrays.deepToString()这不需要循环。但是,这将在您的控制台中打印 true/false 值。

在您的情况下,建议创建一个名为 Board 的类,其中包含二维 boolean 数组作为成员,并且您可以重写 toString() 方法对于 Board 类。那么你就可以做类似的事情:

    Board board = new Board();
System.out.println(board);

这里可以隐式调用 Board 类的重写 toString() 方法。

我还注意到,您在此 toString() 方法中创建最终结果的方式并不是最佳的。您应该阅读有关字符串不变性、字符串池以及使用类似 StringBuilder 等类的主题。 .

关于java - toString 方法用 2D boolean 数组打印游戏板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com