0

if else ステートメントがあります。

<script>
function myFunction()
{
var x="";
var myProb = Math.round(Math.random() * 1);
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
document.getElementById("demo").innerHTML=x;
}
</script>

「if」ビットと「else」ビットは実行されますが、「else if」ビットは完全に除外されます。「グッドデイ」は決して起こりません!

どうしてこれなの?私は自分が間違っていることを見ることができません。

4

6 に答える 6

8

myProb0または1になるだけなので、else ifが満たされる条件になることはありません。


0私の仮定では、との間の小数点以下の桁数が必要です1。その場合は削除しMath.Round()ます:

var myProb = Math.random();
于 2013-02-21T11:09:46.463 に答える
3

の結果はMath.round(Math.random() * 1)、Math.round により 0 または 1 にしかなりません。

于 2013-02-21T11:11:18.273 に答える
2

Math.round(Math.random() * 1);0 または 1 しか生成できません。0 は「おはよう」、1 は「こんばんは」に該当します。

于 2013-02-21T11:09:46.413 に答える
1

試す

Math.round(Math.random() * 100) / 100

あるいは単に

Math.random()
于 2013-02-21T11:12:17.333 に答える
1

あなたのコードで

if (myProb<0.3)
  {
  x="Good morning";
  }

の前に真です

else if (myProb<0.6)
  {
  x="Good day";
  }

math.round0または1を生成します

于 2013-02-21T11:10:11.430 に答える
-1

myProbをパラメーターとして使用するように関数を少し変更すると、次のようになります。

function myFunction(myProb)
{
var x="";
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
console.log(x);
}

myFunction(0.4)

Chromeでこれを行うGood dayと、コンソールに印刷されます。問題は、値を四捨五入していることのようですMath.random()。このようにコードを分離すると、エラーがどこにあるかが明確になります。

于 2013-02-21T11:12:47.403 に答える