2013-05-21 53 views
0

我需要重新計算陣列的瓦萊斯在JavaScript中,我試圖做這樣的:爲什麼我在重新計算數組時重新獲得增值?

 for (var i = 0; i < totalNum; i++) { 
      x = 3; 
      if (chane[i]<rand) { 
      chane[i+1] += chane[i]; 
      chane[i] = 0; 
      } else{ 
      chane[i] -= x; 
      chane[i+1] += x; 
      }; 

chane陣列來與價值觀[15,4,4,0],和出來的[12,40,40,3] totalNum是4.

我一直在盯着這段代碼試圖找到我的新手錯誤隱藏的地方......我是JavaScript新手,所以這很好,可能只是一些語法錯誤。

+6

'rand = 3'選擇公平的擲骰子。保證是隨機的。 http://xkcd.com/221/ – Halcyon

+0

我已經假設3調試明顯。你能以更多的方式來回答這個問題嗎? – PovilasID

+0

你能解釋一下你期望的輸出嗎?什麼是'totalNum'?它是'chane.length-1'嗎? – bfavaretto

回答

1

你忘了你的價值轉換成整數,應該字符串值傳遞給你的迴路校驗驗證碼:

for (var i = 0; i < totalNum; i++) { 
     // convert to int by mul to 1 
     chane[i]*=1; 
     chane[i+1]*=1; 

     x = 3; 
     if (chane[i]<rand) { 
     chane[i+1] += chane[i]; 
     chane[i] = 0; 
     } else{ 
     chane[i] -= x; 
     chane[i+1] += x; 
     }; 
    } 

如果設置CHANE = [15,4,4,0]和設置totalNum = 4,結果爲:[12,4,4,0,0NN]NaN用於檢查最後的值,因爲當i = 3時,chane [3]等於0並且chane [i + 1 ]等於未定義和未定義乘以每個數字是NaN,你可以修改它的上限變化(在你的例子中:set totalNum爲3,修改爲totalNum = chane.length-1)或添加一些if

+0

由於懷疑語法級別錯誤:)感謝您提供其他提示:) – PovilasID

+0

@PovilasID ywc;) –

相關問題