我正在研究机器人迷宫,机器人在没有撞到墙壁的情况下找到目标。作为一种“回溯”方法,我需要机器人朝着与第一次遇到交叉点时相反的方向前进。这是我的代码:
答案 0 :(得分:1)
这应该有效。我认为您可能忘记在执行初始Junction currentJunction = junctionIterator.next();
后继续遍历列表,因此您从未真正浏览过列表。另外,如果有空列表,您可能希望在使用hasNext()
之前始终检查next()
。
public int searchJunction(IRobot robot) {
boolean foundJunction = false;
Junction currentJunction = null;
//Iterate through list until the end, or until correct junction is found.
while (!foundJunction && junctionIterator.hasNext()) {
currentJunction = junctionIterator.next();
if ((((currentJunction.x)==(robot.getLocation().x))) && ((currentJunction.y)==(robot.getLocation().y))) {
foundJunction = true;
}
}
return currentJunction;
}
希望这可以解决问题。
答案 1 :(得分:0)
在while循环内你遇到麻烦似乎没有进入最后一个路口......这是设计的吗?或者应该是
while (junctionIterator.hasNext()) {
if ((((currentJunction.x)==(robot.getLocation().x))) && ((currentJunction.y)==(robot.getLocation().y)))
break;
currentJunction = junctionIterator.next();
}
让我知道这是否有帮助,或者我误解了你的问题