2012-02-07 12 views
1

は簡単なものです。私は3つのチェックボックスを持っており、どのチェックボックスが入力されたかに基づいて実行すべき多数の条件文を持っています。この場合、私は3つすべて「チェック」しているので、これらのステートメントのどれも実行する必要はありません。私はそれらを間違ってフォーマットしたように見えます。私は私が間違って何をしたか知ってみましょう...ありがとうIF条件付きステートメントのフォーマットが間違っていますか?

ロガー:3のうち2に該当する場合

// form.isOpenLevel() = true 
    // form.isPhyCompLevel() = true 
    // form.isFinCompLevel() = true 

これらの3つのステートメントのみを実行する必要があります。少なくとも私がやろうとしていたことだ。

if ((form.isOpenLevel() == true && form.isPhyCompLevel() == true) && (form.isFinCompLevel() != true)); 
     { 
      paramBean.addFilter(new DetFilterCriteriaBean("MSST_HEADER_DATA_MV.FIN_COMP_DATE","is","NULL")); 

     } 


     if ((form.isPhyCompLevel() == true && form.isFinCompLevel() == true) && (form.isOpenLevel() != true)); 
     { 
      paramBean.addFilter(new DetFilterCriteriaBean("MSST_HEADER_DATA_MV.PHYS_COMP_DATE","is","NOT NULL")); 

     } 

     if ((form.isOpenLevel() == true && form.isFinCompLevel() == true) && (form.isPhyCompLevel() != true)); 
     { 
      paramBean.addFilter(new DetFilterCriteriaBean("nvl2(MSST_HEADER_DATA_MV.PHYS_COMP_DATE,MSST_HEADER_DATA_MV.FIN_COMP_DATE,'X')","is","NOT NULL")); 

     } 
+3

'if()'の後にセミコロンを削除してください。 – Vladimir

+0

';'の後に ';'を削除してみてください。 – alf

+0

すばやく返信いただき、ありがとうございました...私はそのことを知らなかったと信じています。 –

答えて

2

まず第一に、余分なparanthesisは冗長である:

((a && b) && c) 

はまた

(a && b && c) 

に相当します - 「3のうち2に該当する場合、これらの3つのステートメントのみ実行する必要があります手段

if (b && c) 

で十分です。

最後に、if後のセミコロンは、条件を終了さ:

if (b && c); 
    statement; 

は、あなたの文は常にステートメ理由です

if (b && c) 
{ 
} 
statement 

に相当します。

条件の後に;を削除します。

+0

情報提供者に感謝しています...何らかの理由で私はセミコロンに気づきませんでした –

+0

@DocHolidayお待ちしています。また、残りのノートも考慮する必要があります。 '((&& b)&& c'は他のプログラマーにあなたのコードを笑わせてもらえるようにするかもしれないし、節の余分な条件がパフォーマンスを低下させるかもしれない... –

+0

私は今それらを変更しています....ありがとう –

2

if文の最後にセミコロンを取り除きます。これは先制的にそれを閉じます。言い換えれば

、この:

if (a); { 
    //do something 
} 

がこれに相当します//do somethingは常に実行されるブロックフローティングになり、あなたのif文の条件部分

if (a) { 
} 

{ 
    //do something 
} 

た場合実行するコードはありません。

+0

ありがとう正確にあなたが意味するもの –

1

ifステートメントの最後にセミコロンがあります。削除してください。条件付きの権利を終了します。中括弧で囲まれたブロックは、の外側で実行されています。条件はです。

さらに、同等かどうかを確認する必要はありません。 IFライン上のセミコロンを取り除く

if (form.isOpenLevel() && form.isPhyCompLevel() && !form.isFinCompLevel()) 
{ 
    ... 
} 
+0

あなたの応答に感謝します –

3

:あなたの方法は、あなたが直接評価できるboolean値を返すされています。

セミコロンは基本的にJavaの「DO NOTHING」を意味します。

if (complex-logic) ; 

if (complex-logic) { /* DO NOTHING */ } 
関連する問題