2014-03-05 75 views
2

對於在學校的任務,我正在做一些模式挖掘通過蠻力(我知道有更好的方式,這是它如何分配)。我所遇到下面的情況......多個if語句越來越多的邏輯和

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語句或有更好的方法?

由於

回答

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值,其定義和之前的上面的片段分配的內容的適當數目。

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; 
      } 
}