Java per loop per creare n quantità di oggetto
Domanda
Ho bisogno di aiuto. Voglio creare un ciclo for che crea n numero di oggetti di una classe e quindi li aggiunge in un array. Qualcosa del genere:
//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);
}
Qualsiasi aiuto sarebbe apprezzato
Soluzione
//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);
}
Nota che è meglio inizializzare ArrayList
con le dimensioni, se è noto (come nel tuo caso)
Altri suggerimenti
Il tuo codice sembra sintatticamente corretto con un'eccezione.
Cambia
p = new Player
a
p = new Player();
Suppongo che la variabile n
sia dichiarata e inizializzata e la classe Player
sia definita con un costruttore argless.
Non vedo un problema qui, basta
p = new Player();
(ma questo potrebbe essere stato solo un refuso) e l'elenco giocatori verrà popolato con n diversi oggetti Player.
Nota, sto solo supponendo, vuoi usare il costruttore predefinito per Player.
Suggerimento per i nomi: non dovresti nominare un Elenco "..Array", a meno che tu non voglia confonderti;) Basta nominarlo "..Elenco"
Non dimenticare di programmare l'interfaccia (piuttosto che la classe concreta).
List<Player> numberofPlayers = new ArrayList<Player>(n);
Dimenticare di farlo (o non saperlo) è un errore comune per i principianti.
Se in seguito decidi di passare a un'implementazione di un elenco alternativo (LinkedList o forse una raccolta di Google o un elenco di raccolte di Apache Commons) non dovrai modificare tutti i riferimenti all'elenco - solo l'allocazione iniziale.