我有一个while循环,在没有满足条件的情况下终止,我不知道为什么。当我调试check的行和列是(4,10)而目标是(4,1)。有什么想法吗?
Position check = unexplored.get();
do{
if(isValid(check.up())){
unexplored.put(check.up());
numUnexplored++;
}
if(isValid(check.right())){
unexplored.put(check.right());
numUnexplored++;
}
if(isValid(check.down())){
unexplored.put(check.down());
numUnexplored++;
}
if(isValid(check.left())){
unexplored.put(check.left());
numUnexplored++;
}
explore(check);
explored.put(check);
check = unexplored.get();
}while(check.getColumn() != goal.getColumn() && check.getRow() != goal.getRow());
值得注意的是,如果我将顶部的检查初始化更改为:
Position check = null;
然后将其设置在循环的顶部,如:
do{
check = unexplored.get();
....
循环终止于同一地点。
答案 0 :(得分:3)
如果您只想在check
和goal
引用相同的单元格时退出,则需要在{{1}中将&&
更改为||
条件。