Ajout d'objets dans un tableau
Résolu/Fermé
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
-
Modifié le 26 janv. 2021 à 20:02
Ouss91 Messages postés 35 Date d'inscription dimanche 24 janvier 2021 Statut Membre Dernière intervention 20 juillet 2021 - 30 janv. 2021 à 16:31
Ouss91 Messages postés 35 Date d'inscription dimanche 24 janvier 2021 Statut Membre Dernière intervention 20 juillet 2021 - 30 janv. 2021 à 16:31
A voir également:
- Ajout d'objets dans un tableau
- Tableau croisé dynamique - Guide
- Site pour vendre des objets d'occasion - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
26 janv. 2021 à 20:39
26 janv. 2021 à 20:39
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
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
26 janv. 2021 à 21:41
26 janv. 2021 à 21:41
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.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
26 janv. 2021 à 21:52
26 janv. 2021 à 21:52
La bonne syntaxe c'est :
La taille est déjà fixée dans ce code, ce sera 10.
NB. Ce n'est pas une instance de
private static Forme[] batiments = new Forme[10];
La taille est déjà fixée dans ce code, ce sera 10.
NB. Ce n'est pas une instance de
Forme, c'est une instance de
Forme[]ce qui n'a rien à voir.
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
26 janv. 2021 à 22:01
26 janv. 2021 à 22:01
Je te remercie, je vais tester!
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
26 janv. 2021 à 22:01
26 janv. 2021 à 22:01
J'ai fixer la taille du tableau à 10, jai la même erreur...
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
27 janv. 2021 à 08:17
27 janv. 2021 à 08:17
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); }
Ouss91
Messages postés
35
Date d'inscription
dimanche 24 janvier 2021
Statut
Membre
Dernière intervention
20 juillet 2021
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
27 janv. 2021 à 18:13
27 janv. 2021 à 18:13
Bonsoit KX, désolé pour la réponse tardive.
Je te remercie, je vais tester tout ça.
Je te remercie, je vais tester tout ça.