Question

J'ai besoin d'aide. Je veux créer une boucle for qui crée un nombre n d'objets d'une classe, puis les ajoute à un arraylist. Quelque chose comme ça:

//Player is a custom class 
ArrayList<Player> numberofPlayersArray;
numberofPlayersArray = new ArrayList<Player>();

//n is a variable for the number of Player class objects that I want to create
  for(int i = 0; i < n; i++)
  {

    //this is what I can come up with but I am missing something 

     Player p;
     p = new Player
     numberofPlayersArray.add(p);

    }

Toute aide serait appréciée

Était-ce utile?

La solution

//Player is a custom class 
ArrayList<Player> numberofPlayersArray = new ArrayList<Player>(n);

//n is a variable for the number of Player class objects that I want to create
for(int i = 0; i < n; i++) {

    //this is what I can come up with but I am missing something 

     Player p = new Player();
     numberofPlayersArray.add(p);
}

Notez qu'il est préférable d'initialiser ArrayList avec la taille, si elle est connue (comme dans votre cas)

Autres conseils

Votre code est syntaxiquement correct à une exception près.

Changer

p = new Player

à

p = new Player();

Je suppose que la variable n est déclarée et initialisée et que la classe Player est définie avec un constructeur sans arglises.

Je ne vois pas de problème ici, il suffit de faire

p = new Player();

(mais cela aurait pu être une faute de frappe) et la liste des joueurs sera peuplée de n objets Player différents.

Notez que je suppose simplement que vous souhaitez utiliser le constructeur par défaut pour Player.

Conseil de nommage: vous ne devriez pas nommer une liste '..Array', sauf si vous voulez vous embrouiller;) Nommez-le simplement '..List'

N'oubliez pas de coder pour l'interface (plutôt que pour la classe concrète).

List<Player> numberofPlayers = new ArrayList<Player>(n);

Oublier de faire cela (ou ne pas savoir à ce sujet) est une erreur courante chez les débutants.

Si vous décidez de passer ultérieurement à une autre implémentation de liste (LinkedList ou peut-être une liste de collections Google Collection ou Apache Commons Collection), vous ne devrez pas modifier chaque référence de la liste, mais uniquement l'allocation initiale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top