java - 即使其中一个条件为真,为什么这个 boolean 值输出为假?

标签 java loops boolean

所以我有这个简单的 boolean 方法来检查我的游戏是否已经结束。在 main 方法中,我有一个以语句 while (isGameEnd() == false) {...} 开头的大循环。即使该方法中的一个、两个或所有条件都为真,该循环似乎也永远不会中断。我不明白。

public static boolean isGameEnd() {
        if (lives == 0 || steps == 0 || isMazeCompleted()) { return true; }
        else { return false; }
}

最佳答案

在函数定义中使用static 对我来说是一个危险信号。如果一个类定义了默认字段值,那么这些默认值将是检查的内容,而不是该类的特定实现:

class Game {
  int lives = 3;
  int steps = 10;
  public boolean isMazeCompleted() {
    return false;
  }
  public void doStuff() {
    lives--;
  }
  public static boolean isGameEnd() {
    if (lives == 0 || steps == 0 || isMazeCompleted()) {
      return true; 
    } else { 
      return false; 
    }
  }
}

public static void main(String[] args){
  Game a;
  while(!a.isGameEnd()){ // check 'isGameEnd' for the static class
     a.doStuff(); // This does *not* update the static class
  }
}

大多数 Java 编辑器都会提示在非静态上下文中使用静态函数,因此会建议使用 Game.isGameEnd() 而不是 a.isGameEnd() ,这使得程序员更清楚错误所在。

关于java - 即使其中一个条件为真,为什么这个 boolean 值输出为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532249/

相关文章:

java - 如何访问 Openfire 服务器中的 RESTAPI 并从该 Web 服务创建用户?

loops - 为什么 Clojure 的范围只迭代 32 次?

javascript - 在循环外访问循环内的所有变量

java - 我的代码不会返回任何内容!输出只是空白

java - Java中的 boolean 值与 boolean 值

java - 如何在 ubuntu 中为 java 应用程序提供进程名称

java - 对话API调用

c++ - cin 的十进制输入验证?

C# 提示输入 boolean 值

java - Maven 构建的泛型问题