2012-02-10 10 views
2

Weblogicアプリケーションサーバー11上で動作するJava 6アプリケーションがあります。問題をデバッグしようとしています。私のコードはif、else if、elseのデバッガ動作

if(a==0){ 
    //Do A 
} 
else if(a==1){ 
    // Do B 
} 
else{ 
    // do C 
} 

私の問題は私のブロックが真とライン2である場合にあっても、デバッガは他のブロック内のライン8に行きます、まだ実行されていることです。 マシン上とサーバー上のコードが同期されるため、不一致はありません。 私のコードで何が間違っているのか探してみてください。

+1

条件として 'int'代入を使用しているときに、コンパイラエラーを受け取っていませんか? –

+0

この新しいコードも問題ありません。コピー貼りを使用してください。 –

答えて

1

if(a=0){ 
    //Do A 
} 
else if(a=1){ 
    // Do B 

を変更。

逢引がある場合:

b = null; 
if (a == 0) { 
    b = 1; 
} else if (a == 1) { 
    b = 0; 
} 

そして、それが実行バイトコードです:

if (a == 0) { 
     b = 1; 
} else if (a == 1) { 
     b = 0; 
} 
else { 
     b = null; 
} 

いくつかのコンパイラが行う一般的な最適化が可能です。コードがJITコンパイラによってネイティブにコンパイルされている場合は、 デバッグクライアントとjdkに応じて、狂った現在の命令行を見ることができます。しかし、ブロックの最後の状態が期待される限り、それは問題ありません。

実行時に文を閉じる必要があることがあります。だからそれは閉会に行く。

staticの値がaに割り当てられていないことを確認し、その場合は再コンパイルします。静的の割り当てはコンパイル時にリンクされます。

+0

+1良い考え。 – Gangnus

+0

double値== 0; if(a == 0){ value = 3; } else if(a == 1){ 値= 2; } else {value = 0;} }私はこれが起こっているかもしれないと思います。ありがとう。 – Vivek

+0

あなたの助けをお待ちしています。 'else {}'が空の場合、終了指示が生成されます。なぜそれを取り除いて、それが「修正」されているのを見てみませんか? – ssedano

0

は、それはすべきではない:

if(a==0) 
... 
else if(a==1) 
... 
else 
... 
0

=は割り当てがあると==が比較であることを忘れてはいけない - あなたのケースでは、あなたが値を代入して、割り当ての結果をチェックしています、比較を実行しません。

単に私たちは// Do Cを何知っておく必要があり

if(a==0){ 
    //Do A 
} 
else if(a==1){ 
    // Do B 
+0

すみません。私が助けを求めて書きましたが、それはタイプミスでした。私の実際のコードでは、条件が異なります。私はすでに私の最初の投稿を編集しました。この問題は依然として続きます。ありがとう – Vivek

+0

@誰かがdownvoted - なぜ正確に?投稿された質問への正解でした... – Basic