ArrayList
juba
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour, j'ai une liste avec des tableaux de String dedans et veux extraire les valeurs de le nieme élément des tableaux mais ça fonctionne pas. voici mon code:
J'ai besoin d'extraire ces valeurs pour dessiner un graphe pour mon PFD. Merci d'avance.
public void tableau(ArrayList<String[]> list ){
int i=0;
for(String[]s: list ){
X[i]= Integer.parseInt(s[2]);
i++;
}
}
J'ai besoin d'extraire ces valeurs pour dessiner un graphe pour mon PFD. Merci d'avance.
4 réponses
On ne sait pas ce qu'est X, mais il faudrait que ce soit un int[] avec X.length>=list.size()
À part ça, il n'y a pas de raison que ton code ne fonctionne pas, sauf si les String[] que tu itères n'ont pas au moins 3 valeurs...
À part ça, il n'y a pas de raison que ton code ne fonctionne pas, sauf si les String[] que tu itères n'ont pas au moins 3 valeurs...
Cette liste contient les lignes d'un fichier que j'ai extrais sous forme d'un tableau de mots, le X ç bien un tableau d'entiers qui sert de coordonnées pour le graphe.
à la compil il n'affiche pas d'erreur mais à l'exécution l'application se bug...
à la compil il n'affiche pas d'erreur mais à l'exécution l'application se bug...
Il va donc falloir nous dire où ça plante, mais j'ai rappelé les conditions pour que ça marche, il y en a donc au moins une des deux qui n'est pas correcte (taille de X, ou des s)
Voilà, je vais vous faire un topo, je fais une application qui dessine des graphes à partir des données contenues dans un fichier csv donc je fait l'extraction de ces données vers une liste voici le code:
A partir de cette liste que je veux récupérer les éléments de la 2eme et 3eme colonne qui constitue les abscisses et les ordonnées du graphe. j'ai essayé cette méthode pour une colonne:
le code s'exécute normalement mais il revoit aucune valeur????? Comme si la liste est vide!!!!! j'ai vraiment besoin de passer cette étape pour terminer mon PFD
do{
//**** Si le fichier est ouvert alors la méthode lire() lit le fichier ligne par ligne
chaine= fic.lire(); // String chaine
//******************************************************************
//*** Extraction des données dans un tableau depuis les lignes lues par cette méthode
mots =(extracDonnees.extractionDonnees(chaine));// String [] mots
//******************************************************************
//**** Mettre le tableau dans une liste de tableau *****************
valeur.add(mots);// ArrayList<String[]> valeur
//******************************************************************
}while(mots != null);
A partir de cette liste que je veux récupérer les éléments de la 2eme et 3eme colonne qui constitue les abscisses et les ordonnées du graphe. j'ai essayé cette méthode pour une colonne:
public void tableau(ArrayList<String[]> list ){
int i=0;
int [] K = new int[list.size()];
for(String[]s: list ){
K[i]= Integer.parseInt(s[2]);
i++;
System.out.println(k);// pour voir ce que me donne
}
}
le code s'exécute normalement mais il revoit aucune valeur????? Comme si la liste est vide!!!!! j'ai vraiment besoin de passer cette étape pour terminer mon PFD
Déjà, je pense que while(mots != null); implique qu'au dernier tour de boucle le valeur.add(mots); va rajouter null à la liste, ce qui posera problème plus tard en faisant s[2] si s==null, tu peux par exemple faire :
Ensuite, je ne sais pas ce que fais exactement extractionDonnees, mais je ne vois pas a-priori en quoi on aurait nécessairement s[2], dans le cas général on pourrait avoir s.length<3, mais cela va dépendre surement de ta structure de fichier CSV, ce serait quand même bien de s'en assurer.
Pour revenir vraiment au plus près de ce que tu suspectes : que la liste soit vide, il faudrait regarder dans un premier temps combien vaut list.size()... et si effectivement cela vaut 0, regarder si ce que tu manipules c'est bien une java.util.ArrayList<E>, j'ai déjà eu des erreurs parce que j'avais oublié de faire l'import d'ArrayList mais qu'il connaissait malgré tout le nom par effet de bord avec une autre classe.
Au passage, tu pourrais regarder le résultat de valeur.add, qui doit renvoyer true si la liste a changé.
while (true)
{
chaine = fic.lire();
mots = extracDonnees.extractionDonnees(chaine);
if (mots==null)
break;
else
valeur.add(mots);
}
Ensuite, je ne sais pas ce que fais exactement extractionDonnees, mais je ne vois pas a-priori en quoi on aurait nécessairement s[2], dans le cas général on pourrait avoir s.length<3, mais cela va dépendre surement de ta structure de fichier CSV, ce serait quand même bien de s'en assurer.
Pour revenir vraiment au plus près de ce que tu suspectes : que la liste soit vide, il faudrait regarder dans un premier temps combien vaut list.size()... et si effectivement cela vaut 0, regarder si ce que tu manipules c'est bien une java.util.ArrayList<E>, j'ai déjà eu des erreurs parce que j'avais oublié de faire l'import d'ArrayList mais qu'il connaissait malgré tout le nom par effet de bord avec une autre classe.
Au passage, tu pourrais regarder le résultat de valeur.add, qui doit renvoyer true si la liste a changé.