2011-02-09 65 views
0
for (int i=1;i<10;i++) 
    { 
     if something == true 
      do something 
     else 
      do something 
    } 

這是我想做的事: 循環外線,我需要總結,在我something = true和我something = false如何紀念,在我的東西=真

+0

你能澄清一下嗎?我很困惑。 – Mike 2011-02-09 23:01:19

+0

如果我理解你的問題,可能[這樣的事情](http://stackoverflow.com/questions/2082449/how-to-filter-an-array-in-java)是你在找什麼 – 2011-02-09 23:03:04

+0

做什麼你想要放入一個數組,那麼「我」與那個事情是否真實有什麼關係? – CoolBeans 2011-02-09 23:03:33

回答

6
List<Integer> positiveResults = new ArrayList<Integer>(); 
List<Integer> negativeResults = new ArrayList<Integer>(); 

for (int i = 1; i < 10; i++) 
{ 
    if (someCondition) 
     positiveResults.add(i); 
    else 
     negativeResults.add(i); 
} 

someCondition其中被認爲是一個可變boolean或表達。

如果要明確在陣列中,而不是List結果,再加入

Integer[] resultsInArray = positiveResults.toArray(
     new Integer[positiveResults.size()]); 
1

你似乎有你的for循環設置不對,條件語句應該是在中間:

for (int i = 1; i < 10; i++) 

但要回答這個問題,你只需要聲明循環之前的變量:

int i = 1; 
for (; i < 10; i++) { 

} 
// You can still access i here since it is still in scope. 
0

首先,你的循環條件是在錯誤的順序,你可能想要的東西:

for (int i = 1; i < 10; ++i) 

接下來,我想你想

if (something == true) 
{ 
    // do something 
} 
else 
{ 
    // do something *else* 
} 
在循環體

無論如何,在do something部分,您的值爲i,因爲它在本地範圍內。在這一點上,你可以將它添加到你選擇的數組中。

0

例如用列表:

List<Integer> trueStates = new ArrayList<Integer>(); 

    for (int i=1;i<10;i++) 
    { 
     if (something == true) //e.g (i%2 == 0) 
      trueStates.add(i);  
    } 

後for循環,你將有trueState我這東西== TRUE。另一個選擇是使用地圖,它可以讓你知道你所有的數字。

例配圖:

Map<Integer, Boolean> statesMap = new HashMap<Integer, Boolean>(); 
for (int i=1;i<10;i++) 
{ 
    statesMap.put(i, something == true);   
}