Book有包含将摄氏度转换为华氏度的ff代码的页面,我们已被要求重写/简化它。
function convertToCentigrade(degFahren)
{
var degCent;
degCent = 5/9 * (degFahren - 32);
return degCent;
}
var degFahren = new Array(212, 32, -459.15);
var degCent = new Array();
var loopCounter;
for (loopCounter = 0; loopCounter <= 2; loopCounter++)
{
degCent[loopCounter] = convertToCentigrade(degFahren[loopCounter]);
}
for (loopCounter = 2; loopCounter >= 0; loopCounter-- )
{
document.write(“Value “ + loopCounter + “ was “ +
degFahren[loopCounter] + “ degrees Fahrenheit”);
document.write(“ which is “ + degCent[loopCounter] +
“ degrees centigrade<br />”);
}
&#13;
我的版本:
var degFar = [212, 32, -459.15];
var degCent = [];
function convert(input) {
result = (5/9 * (input - 32));
return result;
}
for (i = 0; j = degFar.length; i <= j; i++) {
degCent.push(convert(degFar[i]));
document.write(degCent[i]);
}
&#13;
我拉错了(显然),但我不明白我做错了什么。
答案 0 :(得分:0)
degFar有3个元素,但其索引从0开始。
你的阵列是这样的:
[0] 212
[1] 32
[2] -459.15
你试图推动一个不存在的指数[3]。因此,请使用此修改您的循环,请注意我已将i<=j
替换为i<j
:
for (i = 0; j = degFar.length; i < j; i++) {
degCent.push(convert(degFar[i]));
document.write(degCent[i]);
}
答案 1 :(得分:0)
您的for循环导致错误。您尝试使用两个变量'j'和'i'。我不确定你要通过使用'j'来完成什么(最重要的是你在尝试将它初始化为degFar.length之前从未声明'j')。
保持你的逻辑,我会摆脱'j' - 你不需要它。删除'j'并使用'i'后应该看起来像这样:
for (i = 0; i < degFar.length; i++) {
degCent.push(convert(degFar[i]));
document.write(degCent[i] + "<br>");
}
希望这有帮助。