1

私は自分自身にIF状態を持っています、

tempNum2 = 4, tempNum2 = 3

answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4

if( (tempNum2== answer2 || tempNum1== answer2) &&
    (tempNum2!= answer1 || tempNum1!= answer1) &&
    (tempNum2!= answer4 || tempNum1!= answer4) &&
    (tempNum2!= answer3 || tempNum1!= answer3) &&
    (asnwer5 == 0))
 {
     console.log("Correct");
 }

ここでifステートメントを見ると、tempNum2はanswer4と同じですが、私のFirefoxコンソールでは、正しいと出力されます。ifステートメントを見ると、失敗するはずです。tempNum2は4であり、answer4 = 4であるため、このifステートメントは失敗するはずですが、このステートメントの何が問題になっていますか?他に何も心配する必要はありません。ifステートメントが間違っていると確信しています。

キャンバス

4

4 に答える 4

2

どこでも and を使用しているため、4 つすべての or 句のいずれかが必要です。さらに、答え5が何であるかがわからないので、それについて話すことはできませんが、それも真実であるはずですが、それは定義されています. に変更すると機能する可能性があります&&||,、どのロジックを使用しようとしているのかわかりません。

(false || false)&&
(true || true)&&
(true || false)&&
(true|| true)

false && true && true && true

正確にどのようなロジックが必要かはわかりませんが、コードはまさにあなたが指示したことを実行しています。実際には:

(tempNum2== answer2 || tempNum1== answer2)

したがって、 でない限りtempNum2= tempNum1= answer2、このロジックは常に false を返します。

于 2012-11-26T11:56:01.507 に答える
1

tempnum2!= answer4 || tempNum1!=answer41.) tempnum2 は 3 (最初の行) であり、2.) tempNum1 は定義されていないため、常に true です。最初の行が正しいことを確認してください;)。

/E: コードに深刻なタイプミスがあります。それらを修正する必要があります。

  • tempNum2 を 2 回定義しました。tempNum1 と tempNum2 のことですか?
  • あなたは書い(asnwer5 == 0)た。ということ(answer5 == 0)ですか?
于 2012-11-26T11:58:16.623 に答える
0
(tempNum2!= answer4 || tempNum1!= answer4) &&

おそらく tempNum1 は定義されていないため、これはまだ true と評価されます。したがって、answer4 とは等しくありません。

論理演算子の違いを覚えておいてください! または、条件が 1 つだけ満たされた場合に true を返します。あなたの例では、特定の変数が定義されていない場合、常に満足されます-とにかく不等式テストに関して。

このような if() ステートメントを使用する全体的な構造には、多くの要望が残されています。何よりも読みやすさに影響します。コードのリファクタリングを真剣に検討します。それを維持することは楽しくないし、小さなエラーをデバッグすることもありません - あなたがちょうど経験したように。

于 2012-11-26T12:03:44.187 に答える
0

最初の行にtempNum1 = 4と書くと思います..

tempNum1 = 4、tempNum2 = 3

コード:

tempNum1 = 4, tempNum2 = 3

answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4

if( (tempNum2== answer2 || tempNum1== answer2) &&
    (tempNum2!= answer1 || tempNum1!= answer1) &&
    (tempNum2!= answer4 || tempNum1!= answer4) &&
    (tempNum2!= answer3 || tempNum1!= answer3) &&
    (asnwer5 == 0))
 {
     console.log("Correct");
 }
于 2012-11-26T11:57:56.783 に答える