2011-02-09 43 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);   
}