我有一个包含do while循环的程序。我需要测试是否出现两种情况中的任何一种。第一个是currentPlayerEnergy不等于0.第二个是quit不成立。代码如下:
do
{
switch(answer)
{
case 'w': System.out.println("Walk");
break;
case 'b': System.out.println("Buy");
break;
case 'c': System.out.println("Change Character");
break;
case 'r': currentPlayerEnergy = 0;
break;
case 'q': quit = true;
break;
}
}
while ( (currentPlayerEnergy > 0) || (quit != true ) );
请注意,我只是在'r'的情况下测试currentPlayerEnergy变为零。我理解这个问题,java读取测试并说如果当前能量不为零,继续使用块,但它不会检查退出是否变为真。我使用错误的循环类型吗?是否有其他操作数我应该使用而不是逻辑或?非常感谢。
答案 0 :(得分:8)
是否有其他的歌剧[我]应该使用而不是逻辑或?
是的,要使用的正确运算符是逻辑“AND”(&&
):
while ( (currentPlayerEnergy > 0) && !quit );
我还将(quit != true)
更改为!quit
,但这种变化纯粹是风格上的。
答案 1 :(得分:0)
你在这里告诉程序:
while ( (currentPlayerEnergy > 0) || (quit != true ) );
如果两个布尔表达式中的一个为真,则保持不变。
只有两者都是假的,它才会继续。您希望逻辑完全按照aix进行操作 表示:
while ( (currentPlayerEnergy > 0) && !quit );
请注意(!quit)只是(quit!= true)
的简短形式