gpt4 book ai didi

java - 要么是菜鸟错误,要么是在java中误用.equals

转载 作者:行者123 更新时间:2023-12-01 13:26:51 24 4
gpt4 key购买 nike

所以我正在制作一个 TicTacToe 程序,并且我制作了一个方法来检查是否有 3 个棋子连续,以检查游戏是否结束。

public boolean hasWon() {
if (tictac[0][0].equals(tictac[1][0]) && tictac[0][0].equals(tictac[2][0]) && tictac[1][0].equals(tictac[2][0])) { //Vertical
return false;
} else if (tictac[0][1].equals(tictac[1][1]) && tictac[0][1].equals(tictac[2][1]) && tictac[1][1].equals(tictac[2][1])) { //Vertical
return false;
} else if (tictac[0][2].equals(tictac[1][2]) && tictac[0][2].equals(tictac[2][2]) && tictac[1][2].equals(tictac[2][2])) { //Vertical
return false;

} else if (tictac[0][0].equals(tictac[0][1]) && tictac[0][0].equals(tictac[0][2]) && tictac[0][1].equals(tictac[0][2])) { //Horizontal
return false;
} else if (tictac[1][0].equals(tictac[1][1]) && tictac[1][0].equals(tictac[1][2]) && tictac[1][1].equals(tictac[1][2])) { //Horizontal
return false;
} else if (tictac[2][0].equals(tictac[2][1]) && tictac[2][0].equals(tictac[2][2]) && tictac[2][1].equals(tictac[2][2])) { //Horizontal
return false;

} else if (tictac[0][0].equals(tictac[1][1]) && tictac[0][0].equals(tictac[2][2]) && tictac[1][1].equals(tictac[2][2])) { //Diagonal
return false;
} else if (tictac[0][2].equals(tictac[1][1]) && tictac[0][2].equals(tictac[2][0]) && tictac[1][1].equals(tictac[2][0])) { //Diagonal
return false;

} else {
return true;
}
}

这里的问题是,在这些条件下,我想如果所有索引“连续”,其中 f.ex. X,“X X X”,这对于玩家 X 来说将是胜利。但是,我的程序要求如果任何一种棋子连续填满 3 个,则获胜者,f.ex。 “X O X”会结束游戏,这显然是错误的。我是否误解了.equals?

编辑:在收到精彩的反馈后,有没有办法让 if 语句忽略空格(“”)?

最佳答案

您应该考虑创建一个类,Board 。让此类提供一个包含 getLines 的接口(interface)。这应该返回 List<Line> 。井字棋盘中有八条线:三条水平线、三条垂直线、两条对角线。创建方法isWin(String player, Line line) 。根据该行单元格中玩家标记的数量是否为 3,返回 true 或 false。

我猜你可以在与可怕的嵌套 if 相同的空间中编写整个内容。及其所有难以理解的&&条款,并且功能将是显而易见的。 (这也是封装的良好实践。)

关于java - 要么是菜鸟错误,要么是在java中误用.equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769600/

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