java - If 语句未处理 - Java

标签 java if-statement

我正在写一个井字棋问题。

TicTacToe 类工作正常,但我的主类中的第一个 if 语句未处理。 TicTacToe 类并不是问题所在,因为当玩家 1 获胜时,oNew.checkWinner(1) 返回 true。 (我通过在 if 语句之前放置 System.out.println(oNew.checkWinner(1)); 进行检查)。

但是它不会传递到 if 语句来中断 while 循环,而是继续执行。它与第一个 else if 的作用相同。

奇怪的是,它对于第二个 if 语句和第二个 else if 语句运行得很好。

public static void main(String[] args) {

        TicTacToe oNew = new TicTacToe();
        String champ = "";
        boolean hasWon = false;

        oNew.getMove();
        while(hasWon == false){
            oNew.setMove(1);
            oNew.getMove();
            if (oNew.checkWinner(1) == true){
                champ = "Player 1 wins.";
                hasWon = true;
            }
            else if(oNew.checkCatsGame() == true){
                champ = "Draw";
                hasWon = true;
            }
            oNew.setMove(2);
            oNew.getMove();
            if (oNew.checkWinner(2) == true){
                champ = "Player 2 wins.";
                hasWon = true;
            }
            else if(oNew.checkCatsGame() == true){
                champ = "Draw";
                hasWon = true;
            }
        }
        System.out.println(champ);

    }

最佳答案

为了在其中一个条件为真时离开循环,请添加 breakcontinue (如果不这样做,则添加第一个 if- 后面的语句) else-if block 在当前循环迭代结束并再次检查循环条件之前执行):

if (oNew.checkWinner(1)){
    champ = "Player 1 wins.";
    hasWon = true;
    continue;
}
else if(oNew.checkCatsGame()){
    champ = "Draw";
    hasWon = true;
    continue;
}
  • 继续将结束当前迭代,一旦测试下一次迭代的条件,就会退出 while 循环。

  • 无论 hasWon 的值如何,break 都会终止循环。

关于java - If 语句未处理 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33995918/

相关文章:

java - Spring-LDAP - 密码比较如何更新失败的密码尝试

java - 轻量级 Java 报告引擎

java - 如何在 Mac 上使用 Java 获得纳秒分辨率

java - 如何避免 if 语句并调用多个构造函数

javascript - 关于从输出中隐藏文本字符串的代码的几个问题

java - 当我构建maven单元测试时,出现以下错误

java - 使用Java连接mysql数据库失败

java - 如何选取不为空的最新值?

python - Python 选择文本游戏出现问题(if-then 语句无法正常工作)

r - 如何修复R的错误 “missing value where TRUE/FALSE needed”?