虽然Loop不会终止?

-3 java do-while

我正在使用while循环,它应该在它应该时终止.如果它正常工作,那么当randno它是== highbound或时它会终止== lowbound.

循环代码:

do {
    do {
        randno = (int) (Math.round((Math.random()*(4)) + 0.5)-1);
        direction = getDirection(randno,heading);      
    } while (robot.look(direction)==IRobot.WALL);
    System.out.println(randno);
    System.out.println(highbound);
    System.out.println(lowbound);
    System.out.println("---------------");
} while (randno!=lowbound | randno!=highbound);
Run Code Online (Sandbox Code Playgroud)

输出是3 3 2 ------,或者2 3 2 ------,因此循环应该结束.第一个循环正确结束(我嵌入它们试图让它工作......).出了什么问题?

Era*_*ran 5

randno!=lowbound | randno!=highbound总是如此,因为randno不能等于两者lowboundhighbound(假设它们不相等).

因此循环永远不会终止.

如果您希望在randno不同于两个边界时终止,请将您的条件更改为:

while (randno==lowbound || randno==highbound)
Run Code Online (Sandbox Code Playgroud)

如果您希望randno在与其中一个边界相同时终止,请将您的条件更改为:

while (randno!=lowbound && randno!=highbound)
Run Code Online (Sandbox Code Playgroud)

编辑:根据您的问题,您想要第二个选项.