4

JavaScript の学習を始めたばかりで、C# の基本的な知識を持っています。

このコードを実行してみました:

var number = parseInt(prompt("Enter a number:"));

switch (number) {
  case number >= 1 && number <= 9:
    alert("The number " + number + " is a single digit number.");
    break;
  case number >= 10 && number <= 99:
    alert("The number " + number + " is a two digit number.");
    break;
  case number >= 100 && number <= 999:
    alert("The number " + number + " is a three digit number.");
    break;
  case number >= 1000 && number <= 9999:
    alert("The number " + number + " is a four digit number.");
    break;
  default:
    alert("Your number has 5 or more digits.");
}

しかし、次の後に失敗し続けました:

number <= 9

ここで手を貸してくれませんか?

どうもありがとう!

4

4 に答える 4

7

switch ステートメントは、その引数をケース内の式の値と比較します。

あなたのコードでは、ケースからのこれらのブール値の結果と比較するためnumber、最初のケースでのみ取得され、それ以外の場合に分類されます。のように単純に比較できます。number1 == truedefaulttrue

switch (true) {
  case number >= 1 && number <= 9:
    alert("The number " + number + " is a single digit number.");
    break;
  case number >= 10 && number <= 99:
    alert("The number " + number + " is a two digit number.");
    break;
  case number >= 100 && number <= 999:
    alert("The number " + number + " is a three digit number.");
    break;
  case number >= 1000 && number <= 9999:
    alert("The number " + number + " is a four digit number.");
    break;
  default:
    alert("Your number has 5 or more digits.");
}

if-elseしかし、コンストラクトを使用する方がクリーンです。

if (number >= 1 && number <= 9)
  alert("The number " + number + " is a single digit number.");
else if (number >= 10 && number <= 99)
  alert("The number " + number + " is a two digit number.");
else if (number >= 100 && number <= 999)
  alert("The number " + number + " is a three digit number.");
else if (number >= 1000 && number <= 9999)
  alert("The number " + number + " is a four digit number.");
else 
  alert("Your number has 5 or more digits.");

ところで、はるかに短いでしょう

var l = String(number).length;
alert(l<5
   ? "The number "+number+" is a "+[,"single","two","three","four"][number]+" digit number."
   : "Your number has 5 or more digits."
);
于 2013-07-28T17:21:57.220 に答える
1

switch(true) が必要で、残りは同じままです (推測します)。

于 2013-07-28T17:21:39.553 に答える