Ajout d'objets dans un tableau
Résolu
Ouss91
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
Ouss91 Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Ouss91 Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Ajout d'objets dans un tableau
- Site pour vendre des objets d'occasion - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
Bonjour,
Un tableau ne peut pas changer de taille.
Si tu fais un
Donc
Pour gérer des tableaux de manière dynamique, il faut :
Un tableau ne peut pas changer de taille.
Si tu fais un
new Forme[3]alors
batiments.lengthvaudra toujours 3.
batiments[batiments.length]=b(comme tu l'as fait) sera toujours faux, car les indices d'un tableau vont de 0 à length-1.
Donc
batiments[0],
batiments[1],
batiments[2]: oui ça existe, mais
batiments[3]ça donne l'erreur que tu as.
Pour gérer des tableaux de manière dynamique, il faut :
- Faire un tableau d'une taille plus importante au départ et stocker dans une variable à côté le nombre de données que tu as mis dedans
- Quand le tableau est complet, il faut copier toutes les données dans un nouveau tableau plus grand
Merci encore une fois KX,
private static Forme[10] batiments;
Puis-je faire comme ca pour fixer une taille ?
P.S : je ne peux pas instancier la classe Forme.
private static Forme[10] batiments;
Puis-je faire comme ca pour fixer une taille ?
P.S : je ne peux pas instancier la classe Forme.
La même erreur mais sur quel code ? Toujours le même ? Parce que
Les indices de tableau vont de 0 à length-1, donc dans ton cas de batiments[0] à batiments[9] c'est bon, mais batiments[10] plantera.
Il faut que tu mettes en place ce dont j'ai parlé dans ma première réponse avec un suivi du nombre de données présentes dans le tableau et un redimensionnement quand le nombre de données dépassent la taille du tableau.
batiments[batiments.length]sera toujours faux, que ce soit avec 3, 10, ou 999999999...
Les indices de tableau vont de 0 à length-1, donc dans ton cas de batiments[0] à batiments[9] c'est bon, mais batiments[10] plantera.
Il faut que tu mettes en place ce dont j'ai parlé dans ma première réponse avec un suivi du nombre de données présentes dans le tableau et un redimensionnement quand le nombre de données dépassent la taille du tableau.
private static Forme[] batiments = new Forme[10]; private static int nbBatiments = 0; public void ajouterForme(Forme b){ if (nbBatiments == batiments.length) { // remplacer batiments par un tableau plus grand } batiments[nbBatiments]=b; nbBatiments++; } public void afficherTaille(){ System.out.println("La taille du tableau est " + batiments.length); System.out.println("Le nombre de valeurs dans le tableau est " + nbBatiments); }