Java 抽签决定抽签

Java 抽签决定抽签,java,if-statement,for-loop,Java,If Statement,For Loop,我正在创建一个tic-tac-toe游戏,并使用一维数组创建了棋盘 我有下面的代码,但它返回一个真的,即使董事会仍然是空的,很多更多的情绪可以发挥。谁能告诉我哪里出了问题。谢谢 public boolean gameIsADraw() { for (int i = 0; i <= 9; i++) { if (!board[i].equals(" ")){ if (gameIsAWin() == false) { }

我正在创建一个tic-tac-toe游戏,并使用一维数组创建了棋盘

我有下面的代码,但它返回一个真的,即使董事会仍然是空的,很多更多的情绪可以发挥。谁能告诉我哪里出了问题。谢谢

public boolean gameIsADraw() {
    for (int i = 0; i <= 9; i++) {
        if (!board[i].equals(" ")){
            if (gameIsAWin() == false) {

            }
            return true;
        }
        }

    return false;
}

public boolean gameIsAWin() {
        for (String s: winningConditions) {
            if (winningSituations(s.charAt(0), s.charAt(1), s.charAt(2)) == true){
                return true;
            }
        }
        return false;
    }
public boolean gameIsADraw(){
对于(int i=0;i您可以尝试:

public boolean gameIsADraw(){
   for(int i = 0; i <= 9; i++){
     if(!board[i].equals(" ") && !gameIsAWin){
        break;
     }else if(i == 9) return true;
   }
 return false; 
}
public boolean gameIsADraw(){

对于(int i=0;i在上述评论中,您确认有三种情况:

  • 如果有人赢了比赛,返回false
  • 如果游戏尚未结束,则返回false
  • 否则,这场比赛就是平局,回到正轨
假设
gameIsAWin()
工作正常,您可以单独检查这些情况:

public boolean gameIsADraw() {
    // If someone has won the game, return false
    if (gameIsAWin()) {
        return false;
    }

    // If the game is not over, return false
    for (int i = 0; i <= 9; i++) {
        if (" ".equals(board[i])) {
            return false;
        }
    }

    // Otherwise, the game is a draw, return true
    return true;
}
public boolean gameIsADraw(){
//如果有人赢了比赛,返回false
if(gameIsAWin()){
返回false;
}
//如果游戏尚未结束,则返回false

对于(int i=0;i如果你有一块板3x3,那么3是你应该搜索的空盒子,就好像3个盒子是空的,那么两个玩家仍然有希望,我希望你喜欢我的答案,谢谢

同样,对于4x4的电路板,您应该检查

if(empty>=4) // game left empty

您是否尝试过实现gameIsAWin()正确吗?这可能有效。请发布完整代码。我建议使用Eclipse之类的IDE进行调试。预期的功能是什么?您返回的是布尔值。如果为true,则表示游戏是平局,如果为false,则表示有人赢了或游戏没有结束?
I<9
,因为棋盘有9个平局(索引在[0..8])。@Matthew已经粘贴了gameIsAWin()方法-这是正确的,因为您需要在
for
循环之后返回,否则这将无法编译。请认为这可能是一个输入错误;
return false
是否应该在
for
循环之外?@JonathanNewmuis谢谢。是的,这是一个输入错误,我现在已经将
return false
移到了t之外如果(“.equals(board[i]),则声明{给出了一个编译错误。我是一个初学者,所以不太清楚为什么…有什么建议吗?请解释编译错误,它到底说了什么。不过,您可能最好使用
!board[i]。改为使用equals(“”
)。但是,我刚才想,字符串数组或jbutton或两者都没有?如果
board[i]
是一个字符串(因此
board
是一个字符串[]),这应该可以工作。按
的方式执行。equals(board[i])
而不是
board[i]。equals(“”
允许您避免显式声明
board[i]
可能为空的情况。还请注意,如果(!board[i].equals(“”),则缩进
不一样,因为它会改变你必须返回的条件。我认为这个条件会在最后一步之前做出决定。