1

应该将 max 初始化为什么?我一直在努力解决它,但没有运气。

NUMBER_OF_INPUTS = 5;

var i;
var max;
var userInput; // Input from user

max = ???? ;
for(i=0; i<NUMBER_OF_INPUTS; i++)
{ userInput = parseInt(prompt('Enter input: '));
if (userInput > max)
max = userInput;
}

alert('Max: ' + max);
4

3 回答 3

6

怎么样-Infinity?或者,您可以使用null, 和特殊情况:

if (max == null || userInput > max) {
    max = userInput;
}

如果您想变得非常花哨,请根本不要自己编写循环。让我们Math.max做这项工作:

var i;
var userInputs = [];
var max;

for (i = 0; i<NUMBER_OF_INPUTS; i++)
{
    userInputs.push(parseInt(prompt('Enter input: '), 10));
                                                 // ↑↑↑↑ always pass the radix
                                                 // to parseInt()
}

max = Math.max.apply(null, userInputs);
于 2012-08-14T03:54:50.343 回答
1

Number.NEGATIVE_INFINITY可能是一个不错的选择,但实际上,您不必其初始化为任何内容,还有其他几个选项。您可以“取消循环”第一次迭代,以便强制分配max

NUMBER_OF_INPUTS = 5;
var i;
var max;
var userInput;

userInput = parseInt (prompt ('Enter input: '));
max = userInput;
for (i = 1; i < NUMBER_OF_INPUTS; i++) {
    userInput = parseInt (prompt ('Enter input: '));
    if (userInput > max)
        max = userInput;
}
alert('Max: ' + max);

虽然这会导致一些代码重复,而且看起来很不干净。

或者,您可以使用i控制变量在循环的第一次迭代中强制它:

NUMBER_OF_INPUTS = 5;
var i;
var max;
var userInput;

for (i = 0; i < NUMBER_OF_INPUTS; i++) {
    userInput = parseInt (prompt ('Enter input: '));
    if ((i == 0) || (userInput > max))
        max = userInput;
}
alert('Max: ' + max);
于 2012-08-14T04:08:47.180 回答
0

使用 JavascriptNumber.NEGATIVE_INFINITY常量。这样,任何用户输入都将大于变量初始化的值,因为NEGATIVE_INIFINTY它小于 JS 可以表示的所有其他数字。

于 2012-08-14T03:54:35.363 回答