web-dev-qa-db-fra.com

Java: Ajouter des éléments à une liste avec la boucle FOR où le nom de l'élément a un numéro croissant

J'ai un artiste où je veux ajouter des éléments via une boucle 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?);
}

EDIT: Comment cela irait si j'ai, disons 50 éléments de réponse?

5
Rupal

Vous ne pouvez pas le faire comme vous essayez ... pouvez-vous faire quelque chose comme ça:

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);
}
12
Chris

Cela ne peut pas être fait avec une boucle for- sauf si vous utilisez l'API de Reflection. Cependant, vous pouvez utiliser Arrays.asList pour accomplir la même chose:

List<Answer> answers = Arrays.asList(answer1, answer2, answer3);
6
João Silva

pourquoi vous avez besoin d'une boucle for pour cela? la solution est très évidente:

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

c'est tout. pas de boucle nécessaire.

1
Thomas Uhrig

Si vous avez simplement besoin d'une liste, vous pouvez utiliser:

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

Si vous avez spécifiquement besoin d'une ArrayList, vous pouvez utiliser:

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

Utiliser une fonction aléatoire pour générer un nombre et les itérer sur al à l'aide de la boucle for

ArrayList<Integer> al=new ArrayList<Integer>(5);
    for (int i=0;i<=4;i++){

       Random Rand=new Random();
        al.add(i,Rand.nextInt(100));
        System.out.println(al);
    }
System.out.println(al.size());
0
Shubham Chaurasia

Mettez les réponses dans un tableau et parcourez-le:

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

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

MODIFIER

Voir la réponse de João pour une bien meilleure solution. Je laisse encore ma réponse ici comme une autre option.

0
helpermethod

Il y a toujours des astuces de réflexion que vous pouvez adapter. Voici un exemple, mais l’utilisation d’une collection serait la solution à votre problème (les entiers que vous collez sur le nom de votre variable sont un bon indice nous invitant à utiliser une collection!).

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
Jerome

La solution de Thomas est assez bonne pour cette affaire.

Si vous voulez utiliser une boucle pour accéder à ces trois réponses, vous devez d’abord en insérer trois dans une structure de données semblable à un tableau - un peu comme un principe. Donc, la boucle est utilisée pour opérer sur une structure de données semblable à un tableau, pas simplement pour simplifier la tâche de frappe. Et vous ne pouvez pas utiliser la boucle FOR en donnant simplement des noms de nombre croissant aux éléments.

0
xorange