2016-11-30 3 views
0

Так что я пытаюсь создать цикл, который уменьшит любое число, помещенное в него на одну цифру. То, как я делаю свою математику, добавляет каждый номер по одному. В этом случае 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 = 108. Я хочу, чтобы он прошел через и проверил, что 108 все еще больше 9, и делайте это до тех пор, пока результат не станет меньше 9. Он просто застревает в цикле. Я также попробовал несколько вариантов, которые вернут NaN.JavaScript Вложенные в Loop, Loops бесконечно

<html> 
<body> 

<h1>Reduce Loop</h1> 

<p id="Result"></p> 

<script type="text/javascript"> 
//Defined var start 
var Result = 0; 
var TempReduce1 = 0; 
var LoopTempLength = 0; 
var LoopTempString; 
var i = 0; 
//Defined var end 
//The LongNumber variable represents user input 
var LongNumber = 999999999999; 
//Converts LongNumber to a integer 
var LoopTemp = parseInt(LongNumber); 
//Check if LoopTemp is greater than 9; it is 
while (LoopTemp > 9) { 
    //Gets the Length of LoopTemp by converting it to a string and grabbing the length to then convert back to a integer 
    LoopTempLength = parseInt(LoopTemp.toString().length); 
    //Converts LoopTemp to a string for manipulation 
    LoopTempString = LoopTemp.toString(); 
    i = 0; 
    //Check to see if i is less than the length of LoopTempLength 
    while (i < LoopTempLength) { 
     //Grabs the number in relationship to i, converts it to a integer and added it to TempReduce1 
     TempReduce1 += parseInt(LoopTempString.charAt(i)); 
     i++; 
    } 
    LoopTemp = TempReduce1; 
} 
Result = LoopTemp; 

     document.getElementById("Result").innerHTML = Result; 

</script> 

</body> 
</html> 
+0

Что такое изменение состояния на каждом шагу? Как это отличается от того, что должно произойти? – user2864740

+0

@ user2864740 Я не уверен. Это первый раз, когда я пытался использовать JavaScript. Я не совсем уверен, как правильно его отладить. Все, что я могу вам сказать, это когда я пытаюсь запустить код, который он блокирует и сбой. Указывая на то, что он застрял в петле. У вас есть рекомендация? –

+3

Вы никогда не сбрасываете 'TempReduce1', поэтому вы всегда добавляете к последней сумме, затем назначаете ее обратно на' LoopTemp', поэтому она никогда не будет меньше 9, если исходный цикл не складывается до 9 –

ответ

0

Так что Патрик Эванс имеет право. Я вставил

TempReduce1=0; 

в коде после строки

i=0 

и рутина выгнали 9, как и следовало ожидать.

+0

Спасибо! Это, похоже, устранило мою проблему! –

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