2011-11-25 75 views
5

我有一个ArrayList,我想通过添加元素的循环。的Java:添加元素的ArrayList与FOR循环,其中的元素名称已经越来越多

Answer answer1; 
Answer answer2; 
Answer answer3; 

ArrayList<Answer> answers = new ArrayList(3); 

for (int i=0;i<3;i++) 
{ 
    answers.add(//HOWTO: Add each of the answers?); 
} 

编辑:这将如何去如果我有,让我们说50答案的元素?

+2

您的循环将运行4次。 – spender

+0

我认为重要的问题是:你的意见是什么?你想添加字段吗?或数组?或另一个列表? –

+0

Thaks每一个输入。我想我需要重新定义我试图做到这一点的方式......对我来说,最好的提示是克里斯写的......我正在与此相关。 – Rupal

回答

12

你不能做到这一点你要......你也许可以做这样的事情的方式:

List<Answer> answers = new ArrayList<Answer>(); 
for(int i=0; i < 4; i++){ 
    Answer temp = new Answer(); 
    //do whatever initialization you need here 
    answers.add(temp); 
} 
1

为什么你需要一个for循环的呢?该解决方案是非常明显的:

answers.add(answer1); 
answers.add(answer2); 
answers.add(answer3); 

就是这样。不需要for-loop。

+1

我想有可能超过3个,而总数量可以改变 – NimChimpsky

+1

是的,这是很容易为3元,但如果我有100个? – Rupal

+0

但是:答案字段? - 在他的例子中他们是。什么是输入? –

6

不能用一个for -loop做,除非你使用反射API。但是,您可以使用Arrays.asList,而不是来完成相同的:

List<Answer> answers = Arrays.asList(answer1, answer2, answer3); 
+0

这是不行的,我越来越不兼容的类型:找不到类型变量(一个或多个)的T实例(S)存在,这样的java.util.List 符合java.util.ArrayList中。 – PMARINA

0

把答案放到一个数组和遍历它:

List<Answer> answers = new ArrayList<Answer>(3); 

for (Answer answer : new Answer[] {answer1, answer2, answer3}) { 
    list.add(answer); 
} 

编辑

见若昂的答案更解决方案更好作为另一种选择,我仍然将答案留在这里。

1

如果您只需要一个列表,你可以使用:

List<Answer> answers = Arrays.asList(answer1, answer2, answer3); 

如果你特别需要ArrayList,你可以使用:

ArrayList<Answer> answers = new ArrayList(Arrays.asList(answer1, answer2, answer3)); 
0

总有一些反思黑客日在你可以适应。这里有一些例子,但是使用集合可以解决你的问题(你在变量名上的整数是一个很好的提示,告诉我们你应该使用一个集合!)。

public class TheClass { 

    private int theField= 42; 

    public static void main(String[] args) throws Exception { 

     TheClass c= new TheClass(); 

     System.out.println(c.getClass().getDeclaredField("theField").get(c)); 
    } 
} 
0

托马斯的解决方案已经足够用于这件事了。

如果要使用循环来访问这三个答案,首先需要把有三成类似阵列的数据结构----有点像一个原则。所以循环用于操作类似数组的数据结构,而不仅仅是为了简化输入任务。而且你不能使用FOR循环,只需给元素增加数字名称即可。