2012-04-01 3 views
0

Я разрабатываю программу, в которой мне нужно остановить цикл, когда флаг является истинным. Это краткий пример того, что я хочу:Петля не останавливается, когда установлен флаг?

var aux = true; 
for(i=0; i < limit && aux; i++) 
{ 
    ... 
    if (condition) 
     aux = false; 
} 

Когда условие должно закончить цикл. Но это не так. В чем проблема?

EDIT:

код выглядит следующим образом:

aux = true; 
for(j=posX+1; j <= limitXTop && aux; j++) 
    if(j != limiteXSuperior) 
    { 
    if(map.getXY(j,posY)[0] == 2) 
    { 
     aux = false; 
    } 
    else 
     // Change 
    ... 
    } 
    ... 

напечатать сообщение, чтобы проверить выполнение ввода в IF и ввести.

+5

Почему вы не можете использовать 'break;' для выхода из цикла? – ThiefMaster

+3

Что такое 'condition'? Как он рассчитывается? –

+1

В моем простом испытании это, похоже, работает. В «условии» должно быть что-то не так. Однако вы должны использовать инструкцию 'break'. – freakish

ответ

3

Вместо использования условия на for используйте только инструкцию break.

for(i=0; i < limit; i++) 
{ 
    ... 
    if (condition) 
     break; 
} 
+0

Нет. Это было первое, что я пробовал, и он не работает. – ReyLitch

+3

Так что, очевидно, ваше «состояние» никогда не будет истинным! – freakish

+0

@ user1306586 попробуйте 'alert()' внутри вашего условия, чтобы узнать, достигнуто ли оно. С 'break', как я предлагаю, он выйдет из цикла. – rcdmk

-1

Позвольте мне угадать ... i не определен?

+0

Это правда, что он не определен, но я пытался объявить его и все еще не работаю. – ReyLitch

Смежные вопросы