2009-07-22 14 views
1

Javaコース用のアプリケーションを作成しています。私は完全な初心者であり、私はコースとウェブから学んだ教材から離れています。アプリケーションは何らかの動作を示していますが、原因を特定できません。アプリケーションはGUIベースであり、ユーザーの入力に関する計算を行います。アクションリスナーの部分については は、私がのセットを持っている場合のような文: すべてのそのような行にJavaアプリケーションの場合/ケース推奨

「このボタンは、これを行う場合は、このボタンは、この をすれば」。押されたボタンに対応するものを実行するのではなく、アプリケーションがすべてのifステートメントを実行しているかのようです。

私は、このような事のためにケース/スイッチ構造を使用する方が良いでしょうか?

私は必要に応じて私のコードを掲載することができます。私はこのサイトのまわりで新しいです。

+3

などのような文があり、投稿してください場合、私は推測する必要がありますが、あなたを書くことも、あなたの入院新しさを与えますあなたのコード。 – William

+0

コードを投稿できます – Ariel

+0

else-ifsを使用していますか?もしそうでなければ、あなたはすべきです。 – AlbertoPL

答えて

1

アクションリスナーを1つ用意しないでください。コントロールごとに別々のリスナーを作成すると、コードを読みやすくすることができます。

しかし、あなたのコントロールが多くのコードを共有している場合(if文の前後にあるもの)、そのようにするのが理にかなっています。その場合、それはif/elseifでなければなりません。

また、(匿名の内部クラスではなく)リスナーの本格的なクラスを作成すると、コードを再利用するのに役立ちます(各if文内の内容は各サブクラスに入ります)。これはあなたがこれまでに学んだことを超えているかもしれません。

編集:(あなたの実際の質問へのより直接的な答え)限り、あなたの問題として

、のは、すべてのあなたの場合の末尾にセミコロンを使用していたと述べdrs9222の答えのいずれかの場合を除き、実行はならない場合正しいか、if文が間違ったことをテストしています。

テストしているものを投稿するだけで、既知の "Button"オブジェクトを==または.equalsを使ってevent.getSource()と比較する必要があります。比較している各ボタンオブジェクトは異なるため、1つのみ実行する必要があります。

+0

私はアプリケーションが非常に小さいので、単一のリスナーがOKであると考えました。それ以来、やや成長してきました。しかし、学習の精神の中で、なぜ私のif文が奇妙な動作をしているのかを理解したいと思います。サブクラスを作ることも私の考えを超えました。あなたのご意見ありがとうございます。 –

+0

+1のアクション、1つのアクションリスナー。 -10は「本格的なクラス」です。 –

+0

@tom匿名の内部クラスは、コードの再利用ではあまり良くありません。メンバーと全員が完全で再利用可能なクラスにすることで、改善されないものはほとんどありません。私はしばしばリスナーが完全なクラスではなく、リファクタリングを見ることができないと考えたことがないため、サイズの1/10の単一のクラスにそのような態度を持つ人々によって書かれたかなりのコードをリファクタリングしました。邪悪なコピー/ペースト/編集/リピートトリックをしました。 –

2

私は確かに言うことができませんが、いつもやっていたことはで、else ifではありませんでした。私の条件のいくつかが満たされれば、関連するコードがすべて実行されました。最初の一致のみを実行する場合は、if-elseを使用して、次の文が実行されないようにします。

+0

コードはhttp://pastebin.com/m70593cb3にあります。 ドロップダウンメニューには3つのif文があり、それぞれのボタンには独自のif文があります。これまでのあなたの洞察に感謝します。 –

3

私はあなたのコードが表示されるまで、この

if (condition); 
{ 
    ... 
} 

の代わりに、この

if (condition) 
{ 
    ... 
} 
+0

私は前に間違いを犯したので、これが問題を引き起こす可能性があることを認識していますが、私のステートメントはセミコロンで終わっていません。コードはhttp://pastebin.com/m70593cb3で見つけることができます。 –

+3

非常に速い視線の後、私はその行141、169、198にこの問題があることを確認します – drs9222

+0

ああ、どうやってそれを何度も恋に落としました...ごめんなさい。もう一度見ていて、そこにいるのを見ていて残念だよ。私の目は怠惰になっているはずです。)ありがとうございます。 –

関連する問題