Parcourir arrayliste [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
-
Messages postés
221
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
17 août 2020
-
Bonjour,
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;
    }

3 réponses

Messages postés
221
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
17 août 2020
1
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).
Messages postés
4
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015

Label est une liste de chaîne de caractères:voilà sa déclaration
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?
Messages postés
221
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
17 août 2020
1
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:

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
Messages postés
4
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015

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++;}
}
}
Messages postés
221
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
17 août 2020
1
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é :

	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);
		}
	}
Messages postés
4
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015

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)
Messages postés
221
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
17 août 2020
1
Je pense ne toujours pas avoir compris ce que vous voulez faire mais voici un morceaux de code

foreach(Object object : liste) 
	{
		if (object.value==1) 
		{ 
			liste2.Add(object.value);
		} 
	}