在学校的作业中,我正在通过蛮力做一些模式挖掘(我知道有更好的方法,这就是分配它的方式)。我遇到了以下情况..。
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个如果声明,还是有更好的方法?
谢谢
发布于 2014-03-05 03:22:44
试试这个:
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的值测试适当数量的项,该值是在上述代码段之前定义和分配的。
发布于 2014-03-05 03:31:16
不如:
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;
}
}https://stackoverflow.com/questions/22187811
复制相似问题