虽然Loop不会终止?

时间:2014-10-28 11:08:49

标签: 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);

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

1 个答案:

答案 0 :(得分:5)

randno!=lowbound | randno!=highbound始终为真,因为randno不能等同于lowboundhighbound(假设它们不相等)。

因此循环永远不会终止。

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

while (randno==lowbound || randno==highbound)

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

while (randno!=lowbound && randno!=highbound)

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