0

我有一个包含 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 ) );

请注意,我只是在测试 currentPlayerEnergy 在“r”的情况下变为零。我理解这个问题,java 读取测试并说如果当前能量不为零,则继续执行该块,但它不会检查退出是否已变为真。我使用了错误类型的循环吗?我应该使用其他操作数而不是逻辑或吗?非常感谢。

4

2 回答 2

8

我应该使用其他一些运算符 [tor] 来代替逻辑或吗?

是的,要使用的正确运算符是逻辑“AND”(&&):

while ( (currentPlayerEnergy > 0) && !quit );

我也改成(quit != true)!quit,但这种变化纯粹是风格上的。

于 2012-05-15T13:49:48.043 回答
0

你在这里告诉程序:

 while ( (currentPlayerEnergy > 0) || (quit != true ) );

如果两个布尔表达式之一为真,则停留在一段时间内。

只有当两者都为假时,它才会继续。你会希望逻辑完全按照aix 所说的那样做:

while ( (currentPlayerEnergy > 0) && !quit );

请注意 (!quit) 只是 (quit != true) 的简写形式

于 2012-05-15T14:08:31.153 回答