Java虽然循环跳过条件

问题描述:

我有一个do while while循环终止,条件不满足,我不知道为什么。当我调试检查的行和列是(4,10)和目标是(4,1)。有任何想法吗?Java虽然循环跳过条件

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(); 
    .... 

循环终止在同一个地点。

如果你想退出,只有当checkgoal指的是同一个小区,那么你就需要改变&&||while条件。

+0

这不是吗?如果'check'和'goal'列或OR行是相同的但不是两者都不会终止? – PTRFRLL

+0

如果它是不同的行或不同的列,您希望它继续。 –

+0

Ohhhh!咄。谢谢! – PTRFRLL