Parcourir arrayliste
Résolu
khatroucha
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Au cours de l'exécution de cette méthode ,cette dernière ne traite que le dernier élément de la liste!
Au cours de l'exécution de cette méthode ,cette dernière ne traite que le dernier élément de la liste!
public static int caculCodeBin () { int indice=0,BN=0; String sc; for(String e : label) { sc=(e.substring(1,2)); indice=Integer.parseInt(sc); BN=(int)Math.pow(2, indice);} return BN; }
A voir également:
- Parcourir arrayliste
- Philips 46PFL7605H (parcourir son pc) - Forum TV & Vidéo
- Parcourir une chaine de caractère en c ✓ - Forum PHP
- Parcourir une arborescence avec stat en C ✓ - Forum C
- Parcourir les propriétés d'une classe VB.NET ✓ - Forum Framework .NET
- Parcourir une colonne sans boucle For ✓ - Forum VB / VBA
3 réponses
public static int caculCodeBin () { int indice=0,BN=0; String sc; for(String e : label) { sc=(e.substring(1,2)); indice=Integer.parseInt(sc); BN=(int)Math.pow(2, indice); } return BN; }
Bonjour, avec indentation c'est plus lisible !
Je suppose que l'attribut label est un attribut.
En fait votre méthode traite bien tout les éléments de la liste mais retourne uniquement la dernière valeur que va prendre BN. (BN n'est pas un tableau de valeur ici).
Votre méthode retourne BN mais qui correspond à dernière valeur de l'array,
Si vous voulez récupérer toutes les valeurs de BN au parcours de la boucle il faut la récupérer dans un tableau ou dans une liste a chaque passage de la boucle.
Il y a plusieurs possibilités, je vous propose de créer une liste d'entier (BN) dans votre méthode. Puis dans la boucle il faut ajouter chaque valeur à BN avec une valeur (celle que vous avez convertie) cela donne quelque chose comme:
PS: je n'ai pas testé ce code.
Cordialement
Si vous voulez récupérer toutes les valeurs de BN au parcours de la boucle il faut la récupérer dans un tableau ou dans une liste a chaque passage de la boucle.
Il y a plusieurs possibilités, je vous propose de créer une liste d'entier (BN) dans votre méthode. Puis dans la boucle il faut ajouter chaque valeur à BN avec une valeur (celle que vous avez convertie) cela donne quelque chose comme:
public static ArrayList<int> caculCodeBin () { ArrayList<int> BN = new ArrayList<int>(); int indice=0; String sc; for(String e : label) { sc=(e.substring(1,2)); indice=Integer.parseInt(sc); BN.add=(int)Math.pow(2, indice); } return BN; }
PS: je n'ai pas testé ce code.
Cordialement
Merci beaucoup :)
Maintenant je confronte une nouvelle difficulté au niveau de traitement des éléments d'une liste : je veux extraire des éléments d'une liste d'objets (liste)et les remplir dans une autre liste(liste2) ,s'ils vérifient une condition , je constate que le remplissage ne s'effectue pas (puisque lors de la vérification de la taille de la nouvelle liste :il ne change pas)
Pouvez_vous m'aider?
Voila le code:
double somme=0;
for (int col=0;col<liste2.size();col++)
{ for (int i=0;i<liste.size();i++)
{liste2.add(liste.get(i));
somme=somme+liste.get(i).value;
if (somme==1)
{ col++;}
}
}
Maintenant je confronte une nouvelle difficulté au niveau de traitement des éléments d'une liste : je veux extraire des éléments d'une liste d'objets (liste)et les remplir dans une autre liste(liste2) ,s'ils vérifient une condition , je constate que le remplissage ne s'effectue pas (puisque lors de la vérification de la taille de la nouvelle liste :il ne change pas)
Pouvez_vous m'aider?
Voila le code:
double somme=0;
for (int col=0;col<liste2.size();col++)
{ for (int i=0;i<liste.size();i++)
{liste2.add(liste.get(i));
somme=somme+liste.get(i).value;
if (somme==1)
{ col++;}
}
}
Voici ce que fais votre code :
Pour chaque éléments de la liste2 ( de 0 à taille.liste), on regarde tout les éléments de la liste1.
Dans votre deuxième boucle vous incrémenté la liste2 d'un élément( elle s'agrandis donc indéfiniment.
et dans le if vous incrémenté col de 1 ce qui donne une boucle infinis.
Si j'ai bien compris votre problème vous voulez parcours la liste 1 et l'ajouter dans une liste 2 si l'élément cherché correspond donc voici un code non testé :
Pour chaque éléments de la liste2 ( de 0 à taille.liste), on regarde tout les éléments de la liste1.
Dans votre deuxième boucle vous incrémenté la liste2 d'un élément( elle s'agrandis donc indéfiniment.
et dans le if vous incrémenté col de 1 ce qui donne une boucle infinis.
Si j'ai bien compris votre problème vous voulez parcours la liste 1 et l'ajouter dans une liste 2 si l'élément cherché correspond donc voici un code non testé :
for (int i = 0; i < liste.size(); i++) { double somme = liste.get(i); System.out.println("Somme numero: "+i+" de valeur " +somme); if(somme==1){ System.out.println("égale à 1 alors ajoute a liste 2"); liste2.add(somme); } }
Je ne cherche pas à ajouter l'élement s'il est égal à 1: la premiére liste est une collection d'objets qui ont un attribut value : je veux ajouter chaque ensemble des objets de la liste qui leur somme de value est égal à 1 dans une colonne de la nouvelle liste (liste2)(dans mon exemple j'ai 6 objet leur somme de value est égal à 3 donc je dois avoir la liste2 de longeur 3)
static ArrayList<String> label = new ArrayList<String>();
Alors il faut que je transforme le BN en tableau pour récupérer le traitement de tous les éléments de la liste?