所以我有这个简单的 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/