Pregunta

I have a do while loop that is terminating without the condition being met and I'm not sure why. When I debug check's row and columns are (4,10) and goal's are (4,1). Any ideas?

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

It's worth noting that if I change checks initialization at the top to:

Position check = null;

and then set it at the top of the loop, like:

do{
    check = unexplored.get();
    ....

the loop terminates at the same spot.

¿Fue útil?

Solución

If you want to exit only when check and goal refer to the same cell, then you'll need to change && to || in your while condition.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top