Redef de la methode EnsureCapacity
BOnjour,
je dois faire une méthode qui vérifie qu'un tableau ait une capacite minimale spécifiée, et si non, rallonger ce tableau pour que l'on puisse y aajouter des éléments.
Le problème est que je n'y parviens pas, j'ai une arrayOutOfBound Error.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
public void ensureCapacity(int capaciteMin,Color col){
// assure que la capacité du tableau représentant les éléments
// est au moins de capaciteMin
int ancienneCapacite = rouge.length;
PointCol [] E;
if (capaciteMin > ancienneCapacite) {
if(col == Color.red){
int nouvelleCapacity = ancienneCapacite * 3 / 2 + 1;
E = new PointCol [nouvelleCapacity];
System.arraycopy(rouge, 0, E, 0, rouge.length);
//if(nouvelleCapacity < capaciteMin)
// nouvelleCapacity = capaciteMin;
rouge = E;
} else {
int nouvelleCapacity = ancienneCapacite * 3 / 2 + 1;
E = new PointCol [nouvelleCapacity];
System.arraycopy(bleu, 0, E, 0, bleu.length);
//if(nouvelleCapacity < capaciteMin)
// nouvelleCapacity = capaciteMin;
bleu = E;
}
}
} |
Ne faites pas attention à la vérif de la couleur,
le principe que je voudrais avoir est le suivant :
Je crée un nouveau tableau d'un capacité suffisante, je copie tous les elements del'ancien tableau dans le nouveau et ensuite, je fais pointer l'ancien sur le nouveau.
Pouvez vous me dire ou cela coince t-il?
Merci