2016-11-30 14 views
0

だから、私はそれを1桁に減らすループを作成しようとしています。私が数学をやっているのは、それぞれの数を一つずつ増やしていくことです。この場合、9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 + 9 = 108である。私はそれを実行し、108が9よりも大きく、結果が9未満になるまでそれを行うことをチェックしたい。それはちょうどループで立ち往生する。私はNaNを返すバリエーションも試しました。JavaScriptネストされたWhileループWhileループ無限

<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

だからパトリックエバンスは正しい。私はライン

i=0 

後、あなたのコード内の

TempReduce1=0; 

を挿入し、予想されるようにルーチンが9を追い出さ。

+0

ありがとう!それは私の問題を修正したようです! –