具有不断增长的逻辑和的多个if语句

时间:2014-03-05 03:17:52

标签: java

对于在学校的任务,我正在通过蛮力进行一些模式挖掘(我知道有更好的方法,这就是它的分配方式)。我遇到过以下情况......

 if (theSetLength == 1) {
        for (int i = 0; i < 100000; ++i) {
            if (itemArrays[i].getItem(theSetInt[0]) == true) ++counter;
        }
    }

    if (theSetLength == 2) {
        for (int i = 0; i < 100000; ++i) {
            if (
                itemArrays[i].getItem(theSetInt[0]) == true &&
                itemArrays[i].getItem(theSetInt[1]) == true
                ) ++counter;
        }
    }

    if (theSetLength == 3) {
        for (int i = 0; i < 100000; ++i) {
            if (
                itemArrays[i].getItem(theSetInt[0]) == true &&
                itemArrays[i].getItem(theSetInt[1]) == true &&
                itemArrays[i].getItem(theSetInt[2])
                ) ++counter;
        }
    }

这将持续到20的长度。是否有更简洁的方法来写这个?具体来说,我需要所有20个if语句还是有更好的方法?

由于

2 个答案:

答案 0 :(得分:3)

试试这个:

for (int i = 0; i < 100000; ++i) {
    boolean all = true;
    for (int j = 0; j < theSetLength && all; ++j) {
        if (!itemArrays[i].getItem(theSetInt[j]))
            all = false;
    }
    if (all) ++counter;
}

以上内容将测试相应数量的项目,具体取决于theSetLength的值,该值已在上述代码段之前定义和分配。

答案 1 :(得分:0)

怎么样:

int counter = 0; 

for(int theSetLength=1; theSetLength <= 20; theSetLength ++){
      for (int i = 0; i < 100000; ++i) {
                for(int j=0; j < theSetLength; j++){  
                  if (itemArrays[i].getItem(theSetInt[j]) == false) break;
                } 
                if(j == theSetLength) 
                    ++counter;
            }
}