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”作为参数传递。

(对于那些了解数据挖掘的人来说,您可能已经猜到我正在尝试实现其中一种算法!)

4

1 回答 1

0

您已经提到,您的问题中引用的表格在内部表示为二维数组,因此计算有多少项目Tx具有r组合就像计算有多少行中有r多少“1”一样简单。

   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 回答