我正在使用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 ------
,因此循环应该结束。第一个循环正确结束(我嵌入它们试图让它工作......)。出了什么问题?
答案 0 :(得分:5)
randno!=lowbound | randno!=highbound
始终为真,因为randno
不能等同于lowbound
和highbound
(假设它们不相等)。
因此循环永远不会终止。
如果您希望在randno
与两个边界不同时终止,请将您的条件更改为:
while (randno==lowbound || randno==highbound)
如果您希望在randno
与其中一个边界相同时终止,请将您的条件更改为:
while (randno!=lowbound && randno!=highbound)
编辑:根据您的问题,您需要第二个选项。