我已经编写了一个包含do-while
循环的“ Hangman”游戏,不断询问用户字母,直到他们解决单词或耗尽生命。奇怪的是,在满足条件时循环不会停止。
这是包含循环的游戏逻辑的实现:
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);
可变结果是从process
方法中获取返回值。这是实现。
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 == 2 && result == -2)
这永远是一个真实的表达。
条件可能应该是
!(result == complete || result == gameOver)
当应用与上述相同的法律时,
result != complete && result != gameOver
(使用常量-尽管我更喜欢像GAMEOVER这样的大写符号-代替魔术数字也使代码更易于阅读。)
我正在运行一个纸牌游戏,两个玩家轮流挑选纸牌,玩家向前移动许多空格。在这种情况下,一旦任何一个玩家达到25或更大的数字,他们击中了家,游戏应该停止。 我的while循环在两个玩家都达到25后继续循环,即使我已经设置了条件,在玩家1的值小于25或玩家2的值小于25时循环。 当循环条件出了什么问题? 编辑:这是我运行的一个测试的一些输出。
即使while中的布尔值为false,循环仍将继续。我不知道怎么了。如果没有缓存boolean循环变量,将您从循环中释放出来,但是由于某种原因,程序没有这样做,那么应该将boolean循环变量设置为false。 *编辑:在第11次查看我的代码并完成更多的代码后,发现问题出现在顶部的另一个循环中,我没有正确地解决这个问题,所以一直反复调用这个循环。我修好了,现在可以用了。非常感谢你,对此很抱歉
我正在使用最新的JMeter 3.3运行最新的Selenium WebDriver测试,一切似乎都很好, 我只有1个线程配置了1秒的爬升和1个循环计数,但是在webdriver执行完成后,JMeter并没有停止整个测试执行,而是无限期地继续执行测试,我不确定为什么会发生这种情况,我正在使用chromedriver,我所做的所有配置都是按照JMeter文档进行的,我还添加了命令位于脚本末尾。请参考附
我使用Drools6.1.0.final和一个无状态会话来激发所有规则。 在我的.drl文件中有以下两个简单的规则。 我想这样做:如果第一个规则为true,则不执行任何其他规则,并从。drl文件退出。 我试着如下: > 试图在第一个规则的Then块中抛出运行时异常,但由于NullPointerException的原因,它仍然会在第二个规则中失败。 添加了drools.halt()和kcontext
我在camelcontext.xml文件的主路由中配置了camel循环,它将调用请求处理路由3次。我还配置了onException xml处理程序(将handled设置为true)。但是,当第一次迭代出现异常时,执行控制会转到onException块,但是循环不会停止处理,相反,其他两次迭代(第二次和第三次)也会发生。