2015-04-04 37 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