2011-01-31 12 views
-3
if ((prmotionCode != 'FSSAVE') || (promotionCode != 'ISSAVE') && (promotioCode == 'SOSAVE')) 
+9

まず、「プロモーション」のスペルが間違っています。 – Moses

+0

あなたは何をしようとしていますか?予想される出力は何ですか?構文エラーがありますか? =) – Ian

+2

答え:それには何も問題はありません。私は、3つの変数すべてが適切に評価されていることを確信しています(3つのうち2つで定義されていません)。いずれか、またはあなたは6か7カッコが欠けています。 – Stephen

答えて

12

あなたはpromotionCodeを3回間違って入力しました。

編集:FirebugのようなJavascriptデバッガを使用すると、コードをトレースして、問題の発生場所とその詳細を知ることができます。また、がそのような問題を検出できるように、Javascriptサポート付きのIDEを試してみることもできます。

+1

最初のもの: 'o'がありません。 2番目のもの:ok。第3のもの:「n」が欠けている。かなり悪い... –

+3

うわー - +8、それは簡単なお金です! – jAndy

+2

ありがとう、私はちょうど学んでいる、私は行くために長い道のりがあるように見える! – xander

1

あなたは最初のprmotioncodeのoを見逃しましたか?

+0

ご協力ありがとうございます。 – xander

2

ifの最初と3番目の部分に 'prmotionCode'のスペルが間違っています。 それ以外の質問に答えるには十分な情報がありません。

2
(promotioCode == 'SOSAVE') 

は、あなたが将来的にはより多くの情報を提供したいことがあり

(promotionCode == 'SOSAVE') 

であるべき。

それはああ、あなたが二回間違ったことを綴った、待つif文

EDIT

で最後の条件です。

1

おそらく2つが必要です& &です。 3番目の変数はpromotionCodeでなければなりません。 'n'がありません

+0

ありがとうございました。 – xander

2

||の使用の間にかっこは使用しませんと& &あなたの目的を不明瞭にする(必要ではないが、強く迷惑..)

+0

なぜですか?優先順位が100%でない方が良いです... –

+2

実際に '(x!= 'foo')'と '(x == 'bar')'をテストするのは意味がありません。 'x'が' bar'の場合、 'foo'でなければポイントテストは行いません! –

+0

助けてくれてありがとう。 – xander

0

あなたはoperator precedenceを心から熟知していますか?

もしそうでなければ、自分自身とコードメンテナーにあなたが期待していた優先順位を明確にするために、複数のテストで常に式のまわりに括弧を入れなければなりません。

あなたはは&&がタイトより||権利を結合することを知っています

2

まず、「プロモーション」の綴りに問題があるようです。

しかし、これまでのところ、論理的な意味はありません。 promotionCode = "SOSAVE"の場合、それは他のものと同じではありません。コードが1つのものに等しくなるのをテストする理由はありませんが、同時に異なるものに等しくないことはありません。それは冗長です。

おそらく実際にここで何をしようとしているか教えてください。

1

あなたのSOの投稿にちょうど間違いがあった場合は、ブール論理について質問していると思われます。問題はprecedenceです。あなたのロジックは4セットに沸く:

  1. FSSAVE
  2. SOSAVE
  3. ISSAVE
  4. {その他すべて}

それが生成するために、それはあなたがしたいです正確に何を伝えるのは難しいですが、あなたのロジックは言う:それがSOSAVE(#3を含む)に属している場合、またはセット(除外#1)に属していない場合は何かをしてください:#2、#3、#4の場合: 、それは(再び)沸騰する:もし#1でないなら - do何か。 ISSAVE句は、演算子の優先順位のために無視されます。

あなたのラインのように書き換えることができ

//Using pc as prmotionCode/promotionCode/promotioCode 
if (pc!='FSSAVE') { 
    //Do something 
} 
1

ポイントはPALいただきました何のタイプミスがない場合でも、条件は

if(promotionCode != 'FSSAVE') 

に低減することができますか?

0

明白な誤りと皮肉を除いて、ここに少しコーディングの助けがあります。代わりにifブロックのswitchを使用してみてください:

switch (promotionCode) { 
    case 'FSSAVE': 
     // code for FSSAVE here. 
     break; 
    case 'ISSAVE': 
     // code for ISSAVE here. 
     break; 
    case 'SOSAVE': 
     // code for SOSAVE here. 
     break; 
    default: 
     // code for none of the above here. 
     break; 
} 

これは、あなたが将来的にはより多くの条件を追加することができます。あなたのコードを再構築することなく。より多くのケースを追加するだけです。ちなみに、promotionCode変数は1回だけ評価されるので、この方法で少し速く評価されます。

P.S.また、promotionCodeを一度だけ試してみる必要があります。エラーの余裕が少ない(申し訳ありません、ハッピーコーディングに抵抗することはできませんでした)

関連する問題