Sortie de tableau
helloword95
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai une ArrayIndexOutOfBoundsException mais je ne comprend pas pourquoi.
Je cherche dans un tableau quelle prénom revient le plus souvent pour ensuite insérer la celebrite donc le prénom est le plus commun dans un nouveau tableau.
J'ai une ArrayIndexOutOfBoundsException mais je ne comprend pas pourquoi.
Je cherche dans un tableau quelle prénom revient le plus souvent pour ensuite insérer la celebrite donc le prénom est le plus commun dans un nouveau tableau.
public Celebrite[] celebAvecPrenomLePlusCommun(){ int nombreCommun = 0; Celebrite[] tableDePrenomCommun = new Celebrite[nombreCommun]; for (int i = 0; i < nombreDeCelebrites-1; i++){ if (listeDeCelebrites[i].getPrenom().equals(listeDeCelebrites[i+1].getPrenom())){ Celebrite celebrite = listeDeCelebrites[i]; nombreCommun++; tableDePrenomCommun[i] = celebrite; } } return tableDePrenomCommun; }
A voir également:
- Sortie de tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
Je pense plutôt que le problème se situe à car .
Tu fais int nombreCommun = 0; puis Celebrite[] tableDePrenomCommun = new Celebrite[nombreCommun]; donc tableDePrenomCommun a une taille de 0.
En faisant nombreCommun++ tu augmentes la taille de nombreCommun, mais ça n'augmente pas rétroactivement la taille de tableDePrenomCommun qui est toujours de 0.
Donc tableDePrenomCommun[i] = celebrite; plante pour i=0 car il n'y a pas de case tableDePrenomCommun[0]
Il faudrait peut-être que tu utilises plutôt des listes que des tableaux si ta taille de données est dynamique.
D'ailleurs tes attributs s'appellent "liste" ce qui est tout à fait cohérent...
Notons par ailleurs que depuis Java 8 on peut éviter de faire soit même ce genre de code avec boucle for, if imbriqué, ajout dans des listes etc.
À la place on utilise des streams et les méthodes utilitaires associées.
Exemple :
Mon code de test :
Cela n'affiche que les noms N3, N4 et N5 car P2 est le prénom le plus représenté.