2014-02-14 48 views
0

我有一個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(); 
    .... 

循環終止在同一個地點。

回答

3

如果你想退出,只有當checkgoal指的是同一個小區,那麼你就需要改變&&||while條件。

+0

這不是嗎?如果'check'和'goal'列或OR行是相同的但不是兩者都不會終止? – PTRFRLL

+0

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

+0

Ohhhh!咄。謝謝! – PTRFRLL