2

私は本からこの演習を書き込もうとしています:

プロンプトを使用して、2 + 2 の値を尋ねるプログラムを作成します。答えが「4」の場合は、alert を使って褒め言葉を言います。「3」または「5」の場合は、「ほぼ!」と言ってください。それ以外の場合は、意地悪なことを言います。

私はこの試みをしました:

var input = "" || 'number'
prompt ("How many is 2+2 ?", input)
if (input = 4)
  print ("Awesome !");
else if (input = 3 || input = 5)
  print ("Close !");
else if (input = 'number'
  print ("wrong number");
else if (input = 'random text')
  print ("use numbers only!")

私はそれが間違っていることを知っています。これは私がするつもりです:

  • 値だけでなく、 の型を判別する必要がありvarます。数値または文字列のいずれかを作成する必要がありvarます ( に従ってtypeof)。なんで ?入力についてpromptは、以下のelse if条件のため、入力された型によって異なります。

  • 運動がそれを求めていないことは知っていますが、私はそれをより優れたものにしたいと思っています.

4

4 に答える 4

3

=課題です。==比較です。

prompt文字列を数値に変換するには、 parseInt(input,10)- を使用します。ただし、JavaScript が型キャストを行うので、ここでは必要ありません。isNaN(input)「数値のみを使用」の結果をテストすることで、ユーザーが数値以外の何かを入力したかどうかを確認することもできます。

だから、このようなもの:

var input = parseInt(prompt("How much is 2 + 2?",""),10);
if( input == 4) alert("Awesome!");
else if( input == 3 || input == 5) alert("Almost!");
else if( input == 10) alert("No GLaDOS, we're working in Base 10 here.");
else if( input == 42) alert("That may be the answer to Life, the Universe and Everything, but it's still wrong.");
else if( isNaN(input)) alert("Use numbers only please!");
else alert("You are wrong!");
于 2013-08-22T20:26:42.190 に答える
3

私は個人的にお勧めします:

var guess = parseInt(prompt('What is 2 + 2?'), 10);

switch (guess) {
    case 4:
        console.log('Well done!');
        break;
    case 3:
    case 5:
        console.log('Almost!');
        break;
    default:
        console.log('Seriously? No.');
        break;
}

JS フィドルのデモ

または、それについてより機能的にするには:

function answerMath (sum) {
    var actual = eval(sum),
        guess = parseInt(prompt('What is ' + sum + '?'),10);
    if (guess === actual) {
        console.log('Well done!');
    }
    else if (guess + 1 === actual || guess - 1 === actual) {
        console.log('Almost!');
    }
    else {
        console.log('Seriously? No.');
    }
}

answerMath ('2*3');

JS フィドルのデモ

この状況で、関数に渡された合計を文字列として評価するために考えることができる唯一の手段はwhile であることに注意してeval()ください現在のリスク)。eval()

于 2013-08-22T20:27:08.020 に答える
1

ほとんどのプログラミング言語では、=は割り当てであり==、等しいかどうかをテストします。そう

a = 4変数 a に数値 4 を代入します。ただしa == 4、a が 4 に等しいかどうかを確認します。

したがって、コードには次のものが必要です。

var input = "" || 'number'
prompt ("How many is 2+2 ?", input)
if (input == 4)
  print ("Awesome !");
else if (input == 3 || input == 5)
  print ("Close !");
else if (input == 'number')
  print ("wrong number");
else if (input == 'random text')
  print ("use numbers only!")
于 2013-08-22T20:26:21.477 に答える