2011-01-24 14 views
1

こんにちは最近私はたくさんのJavaプログラミングを行ってきましたが、多くのif文を使ってきました。問題は、すべてのシナリオをチェックするために100回以上のif文をコピーして貼り付けなければならないことです。次に例を示します。この例の複数のif文をJavaで書く方が良い

while (i < AreaNumbers.size()) { 
     String roomnum = "j" + AreaNumbers.get(i); 
     if (roomnum.equals("j100")) { 
      if (k == 1) { 
       j100.setVisible(true); 
       j100.setToolTipText("<html>" + "<br>" + "Room Number: " + AreaNumbers.get(i) + "<br>" + "Incident ID: " + IncidentID.get(i) + "<br>" + " Teacher: " + Teachers.get(i) + "<br>" + " Description: " + Descriptions.get(i) + "</html>"); 
       k = k + 1; 
      } else if (k > 0) { 
       j100.setToolTipText(k + " help desk calls, click here for more information"); 
       k = k + 1; 
      } 

私はチェックして、比較したいすべてのラベルのために過去if (roomnum.equals("j100")) {、すべてをコピーして貼り付けます。とにかく私はこれを行うことができますか?私はこの同じシナリオを一度に渡って実行するステートメントを書くことができますか?j100これは、毎回j101 j107などの別のラベルで置き換えられます。私はそれが言葉に良い方法を考えることはできません。前もって感謝します。

+0

あなたは 'j100'という名前の変数を持ち、あなたの説明によれば、このコードは100回以上繰り返されます。そのような百の変数を持つことを計画しているということですか? –

+0

だから、PHPのような動的変数がありますか? '$ {$ name} ' –

答えて

9

は(などj100j101、など)の番号の変数名を使用しないでください。あなたがプログラム的にそれらをループすることができますので、代わりに配列を使用してください:あなたが何をする必要があるかに応じて、

SomeType[] j = new SomeType[1000]; 

for (int z = 0; z < j.length; z++) { 
    j[z] = new SomeType(); 

    j[z].setTooltipText("Hello world"); 
} 

を、あなたの代わりに単純な配列のcollections classesより高度を調査することをお勧めします。

+0

thatsまさに私はあなたに感謝を探しています! – Peter

+0

私はあなたが部屋に行くことは決してない-1 – KitsuneYMG

0

このラベルをキーとして使用し、Runnableを使用すると、Map<String, Runnable>を使用できます。 Runnableサブクラスをどのように書くかによって、多くの冗長性が緩和されます。

if(myMap.containsKey(myLabel)) { 
    myMap.get(myLabel).run(); 
} 
+1

私はこのアプローチが少し難しいと思っています。 – nrobey

+1

スレッドはこの質問に何をしなければなりませんか? –

+0

'Runnable'は' Thread'がctor内で 'Runnable'を取るこ​​とができるという事実以外に' Thread'と何が関係していますか? Runnableは単に 'run'メソッドを持つインタフェースです。私は 'Runnable'を使用しているため、C++とは異なり、javaには' operator() 'はありません。これはjava6のファンクタに一番近いところです。 'Callable'を使うことも、' Runnable'が気に入らなければ独自のインターフェースを作ることもできます。 – KitsuneYMG

関連する問題