Java 为什么即使其中一个条件为真,布尔值也为假?
所以我有一个简单的布尔方法来检查我的游戏是否结束了。在main方法中,我有一个大循环,它以语句Java 为什么即使其中一个条件为真,布尔值也为假?,java,loops,boolean,Java,Loops,Boolean,所以我有一个简单的布尔方法来检查我的游戏是否结束了。在main方法中,我有一个大循环,它以语句开始,而(isGameEnd()==false){…}。即使方法中的一个、两个或所有条件变为真,这个循环似乎也不会中断。我不明白 public static boolean isGameEnd() { if (lives == 0 || steps == 0 || isMazeCompleted()) { return true; } else { return fals
开始,而(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()
,这使得程序员更清楚错误所在。使用调试器,但没有一个条件是true
。此外,您发布的代码相当于returnlifes==0 | | steps==0 | | isMazeCompleted()代码>你能在main方法中显示代码吗?真的不应该评论缩进样式,所以我不会System.out.printf(“行:%d步骤:%d mazeCompleted:%b%n”,行,步骤,isMazeCompleted())代码>@OusmaneMahyDiaw Apophasis很有趣:)