2015-04-04 45 views
0

試圖寫出阿姆斯壯功能。我使用chrome進行調試,發現它在val1上炸彈,當我嘗試分配pow的結果時。我嘗試了數組[元素]和數組[元素] .value,但它不喜歡。javascript pow參數 - 阿姆斯壯數字

//Armstrong numbers 
 
function armstrong() { 
 

 
var numberStr = document.getElementById('inputNumber').value; 
 
var numberInt = parseInt(numberStr); 
 
var arrayOfNum = numberStr.split(''); 
 
var val1, val2, val3, total = 0; 
 
    
 
var displayResult = document.getElementById('displayResult'); 
 

 
for (i = 0; i < arrayOfNum.length; i++) { 
 
    arrayOfNum[i] = parseInt(arrayOfNum[i]); 
 
} 
 

 
if (arrayOfNum.length === 3) { 
 
    val1 = Math.pow(arrayOfNum[0], 3); 
 
    val2 = Math.pow(arrayOfNum[1], 3); 
 
    val3 = Math.pow(arrayOfNum[2], 3); 
 
    
 
    total = val1 + val2 + val3; 
 

 
    if (total === numberInt) { 
 
     //display msg that number is armstrong 
 
     displayResult.innerHTML = "Your number " + numberInt + " is an Armstrong Number."; 
 
    } else { 
 
     //display msg that not armstrong 
 
     displayResult.innerHTML = "Your number " + numberInt + " is NOT an Armstrong Number."; 
 
    } 
 
} else { 
 
    // display msg to enter a 3 digit number   
 
    displayResult.innerHTML = "You must enter a 3 digit number."; 
 
} 
 
}

+1

代碼。我實現了Muhammad的建議,並將初始值解析爲一個整數,即使使用了.value並且元素的類型爲number,它仍將其作爲字符串存儲。 – JReam 2015-04-04 18:45:11

回答

1

您使用戰俘。在JavaScript的其Math.pow() 取代你的代碼,上面已經被編輯以顯示解決方案這

val1 = Math.pow(arrayOfNum[0].value, 3); 
val2 = Math.pow(arrayOfNum[1].value, 3); 
val3 = Math.pow(arrayOfNum[2].value, 3); 
+0

謝謝!我從數組中除去.value,並將parseInt()'輸入的值轉換爲比較變量。輸入元素有一個'數字'類型,但它仍然將初始輸入值存儲爲一個字符串?如果JS在元素中拼寫出來,你會認爲JS會存儲正確的數據類型嗎? – JReam 2015-04-04 18:43:53