2014-10-28 5 views
-3

Я использую цикл while, и он не прекращается, когда это необходимо. Если он работает правильно, то он прекратится, когда randno будет либо == highbound, либо == lowbound.Пока цикл не закончится?

код цикла:

do { 
    do { 
     randno = (int) (Math.round((Math.random()*(4)) + 0.5)-1); 
     direction = getDirection(randno,heading);  
    } while (robot.look(direction)==IRobot.WALL); 
    System.out.println(randno); 
    System.out.println(highbound); 
    System.out.println(lowbound); 
    System.out.println("---------------"); 
} while (randno!=lowbound | randno!=highbound); 

Выходной сигнал является либо 3 3 2 ------ или 2 3 2 ------, так что цикл должен закончиться. Первый цикл заканчивается правильно (я встроил их, чтобы попытаться заставить его работать ...). Что происходит не так?

+0

это цикл while, а не цикл 'until', поэтому он должен отличаться от lowbound * и * highbound, чтобы продолжить цикл, а не * или *. –

ответ

5

randno!=lowbound | randno!=highbound всегда верно, так как randno не может быть равно как и lowboundhighbound (при условии, что они не равны).

Следовательно, цикл никогда не заканчивается.

Если вы хотите прекратить, когда randno отличается от обеих границ, изменить условие:

while (randno==lowbound || randno==highbound) 

Если вы хотите прекратить, когда randno такое же, как одна из границ, изменить свое состояние на:

while (randno!=lowbound && randno!=highbound) 

EDIT: по вашему вопросу вы хотите второй вариант.

+0

Эй, большое вам спасибо! Я знаю, что это был, наверное, глупый вопрос, но я буквально смотрел на него часами ... – LozzaManiac