2013-11-16 3 views
0

Примечание: Javascript Noob (только что начал изучаться сегодня)Как я не бесконечно петлю свою программу в javascript?

Для практики с циклами/диалогами я делаю простую программу «какое число я думаю о».

 <script language="javascript" type="text/javascript"> 
     var num = 7; 
     while(num = 7) 
     { 
      num = prompt("What number am I thinking of? From 1-10"); 
      if(num != 7) 
      { 
       document.write("try again <br/>"); 
      } 
      else 
      { 
       document.write("you got it"); 
      } 
     } 
    </script> 

Так что я частично работаю. Когда пользователь вводит 7 (это то, о чем я думаю), он вернет «вы его получили», но он продолжает запрашивать пользователя для ввода. Я думаю, что создал бесконечный цикл, потому что мой браузер немного перепутался при каждом запуске.

Как я могу остановить запуск программы после ввода пользователем правильного номера? Кроме того, если у вас есть какие-либо предложения о том, как я могу сделать это по-другому или лучше, я все уши.

ответ

1

Я думаю, что вы должны попробовать рефакторинга кода вообще что-то вроде этого:

var num=prompt('Enter Guess:',''); 
while(num!=7){ 
    alert('Sorry, incorrect'); 
    num=prompt('Enter Another Guess:',''); 
} 
alert('You got it!'); 

Это в основном спрашивает пользователя для ввода, то до тех пор, пока вход неверен, он сообщает пользователю и снова спрашивает. Когда они, наконец, догадываются правильно, он выходит из цикла.

+0

Цикл «while» работает в том, что он сообщает пользователю, что каждый вход, который не является 7, неверен, однако он также делает это для 7. – nikhiljagga

+0

В этом примере пользователь должен ввести свое первое предположение, а затем, если оно не является 7 он заставит их вводить снова, пока не будет 7. Когда это будет 7, петля выйдет и сообщит им, что они правы. Разве это не то, что вы хотите? – Markasoftware

+0

Точно то, что я хочу, но я этого не понимаю. От взгляда на код, который вы написали, определенно кажется, что это сработает, но по какой-то причине оно не работает. Я попробовал это на хроме и FF – nikhiljagga

1

Изменение:

while(num = 7) 

к:

while(num == 7) 
+0

'While (Num = 7) ', неужели? (Редактирование: хотя установка num до 7 до того, как цикл while победил бы это ...) –

+0

@squeamishossifrage не в соответствии с инициализацией 'num' ... мне не совсем понятно, что пытается сделать OP - но довольно очевидно, что ошибка связана с тем, что он присваивает значение 'num' внутри' while' вместо выполнения сравнения. Кстати, downvoting означает, что ответ не полезен - не так ли? – alfasin

0

Это работает:

Изменение:

while(num = 7) 

к:

while(num != 7) 

И изменить первую строку на:

num = prompt("What number am I thinking of? From 1-10");

+0

Оцените справку, но это дает мне пустую страницу. Не появляется диалоговое окно с подсказкой – nikhiljagga

+0

. Пожалуйста, разместите свой новый код, я сам тестировал его в jsfiddle, и он работал – koljanep

+0

Все еще работало над этим. Ответ Markasoftware выше приблизил меня, но все еще не работает отлично. – nikhiljagga

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