Java 当条件不满足时执行';不要停止循环
我已经编写了一个刽子手游戏,其中包含一个Java 当条件不满足时执行';不要停止循环,java,Java,我已经编写了一个刽子手游戏,其中包含一个do-while循环,不断向用户索要字母,直到他们解出单词或耗尽生命。奇怪的是,当条件满足时,循环不会停止 下面是包含循环的游戏逻辑的实现: String letter; int result = 0; do { displayWord(); System.out.println("Please enter a letter: "); letter = scan.next().toLowerCase(); if (le
do-while
循环,不断向用户索要字母,直到他们解出单词或耗尽生命。奇怪的是,当条件满足时,循环不会停止
下面是包含循环的游戏逻辑的实现:
String letter;
int result = 0;
do {
displayWord();
System.out.println("Please enter a letter: ");
letter = scan.next().toLowerCase();
if (letter.matches("[a-z]")) {
result = hg.process(letter);
displayResult(result);
} else {
System.out.println("Sorry, not a valid input.");
}
}
while(result != 2 || result != -2);
变量结果是从过程
方法中获取返回值。
下面是实现
public int process(String letter) {
boolean found = false;
//... some code here
if(!found) {
if(lifeLine == 0) {
return gameOver; // no lives left
} else {
lifeLine--;
return wrong; // wrong guess
}
} else if (found && this.answer.equals(this.rightAnswer)) {
return complete; // complete game
} else {
return right; // right answer, but incomplete game
}
}
这可能是我返回值的方式导致循环继续循环吗?我已经这样声明了这些值:
public static final int right = 1;
public static final int wrong = -1;
public static final int complete = 2;
public static final int gameOver = -2;
从逻辑上讲,
与
!(result == 2 && result == -2)
这永远是一个真实的表达
情况可能是这样的
!(result == complete || result == gameOver)
当适用与上述相同的法律时
result != complete && result != gameOver
(使用常量-尽管我更喜欢像GAMEOVER这样的大写符号-而不是神奇的数字也使代码更容易阅读。)逻辑上
与
!(result == 2 && result == -2)
这永远是一个真实的表达
情况可能是这样的
!(result == complete || result == gameOver)
当适用与上述相同的法律时
result != complete && result != gameOver
(使用常量——尽管我更喜欢像GAMEOVER这样的大写符号——而不是神奇的数字也使代码更易于阅读。)
让我们考虑一下。如果结果为2,则OR的右侧部分为真(结果不等于-2)。如果结果为-2,则OR的左侧为真(结果不等于2)
让我们考虑一下。如果结果为2,则OR的右侧部分为真(结果不等于-2)。如果结果为-2,则OR的左侧为真(结果不等于2)。好的,我知道你在那里做了什么。我认为使用| |意味着如果其中一个条件是真的,它将被评估为真的。@Nathan它是真的。。但是,对内部条件的否定可能会使人们立即产生期望:)因此,我通常会将否定推到表达式的外部,并/或用
&&
重写它。感谢您为我澄清我的问题。我以后一定会记住这一点。好的,我知道你在那里做了什么。我认为使用| |意味着如果其中一个条件是真的,它将被评估为真的。@Nathan它是真的。。但是,对内部条件的否定可能会使人们立即产生期望:)因此,我通常会将否定推到表达式的外部,并/或用&&
重写它。感谢您为我澄清我的问题。我以后一定会记住这一点。