0

私はJavaの初心者です(これより前にCを学びました)。これは簡単な質問のようですが、ここで立ち往生しています。変数のさまざまな値に対して何らかのアクションを実行したい場合はどうすればよいですか??

例えば-

if(r==1)

else if(r==2)
   //take action2
else if(r==3)
  //take action3
  .
  .
  . 

等々。

'r' の任意の値に対してこれを一般化する方法 (r の値は、実行時に決定される 1 から任意の数値の範囲であると仮定します) ?

上記のコード ブロックを含む関数に、'r' の値をパラメーターとして渡します。

編集:問題をより明確に説明しましょう。

次のようなリストがあるとします。

   Items: a b c d

T1:       1 1 0 1
T2:       0 1 0 0
T3:       1 1 0 0
T4:       0 0 1 1
T5:       1 0 1 1

(ここで '1' は、T1 または T2 または T3 または T4 または T5 にそのアイテムの出現があることを意味します。'0' は、出現がないことを意味します)

r = 1の場合:T1、T2、T3、T4、T5で個別にa、b、c、dの出現回数をカウントする必要があります。

r=2 の場合: (a,b)、(a,c)、(a,d)、(b,c)、(b,c)、および (c,d) の出現回数をカウントする必要がありますT1、T2、T3、T4、T5。

r=3 の場合: (a,b,c)、(a,c,d) などの出現回数をカウントする必要があります。

理解していただければ幸いです。

上記の順列のコードは既に作成しており、それをリストとして渡し、「r」をパラメーターとして渡す予定です。

(データ マイニングを知っている人なら、私がアルゴリズムの 1 つを実装しようとしていることを既に推測しているかもしれません!)

4

1 に答える 1

0

Tx質問で引用されているテーブルは内部的に 2D 配列として表されていると述べました。そのため、組み合わせを持つアイテムの数を数えるのは、「1」の数がr含まれる行の数を数えることと同じくらい簡単です。r

   Items: a b c d

T1:       1 1 0 1
T2:       0 1 0 0
T3:       1 1 0 0
T4:       0 0 1 1
T5:       1 0 1 1

次のように表されます。

int[][] data=new int[noOfT][noOfLetters];

次に、次のように使用します。

   public static int count(int[][] arrayToCount, int noOfCombinations){

       int count=0;
       for(int i=0;i<arrayToCount.length;i++){
           int thisRowCount=0; //how many items are on this row

           for(int j=0;j<arrayToCount[i].length;j++){
               if (arrayToCount[i][j]==1){
                   thisRowCount++;
               }
           }


           if (thisRowCount<=noOfCombinations){ //if this row has the a sufficient number of items increase the count
               count++;
           }
       }

       return count;
   }
于 2013-10-18T13:58:21.200 に答える