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 に答える