Parcourir arrayliste

Résolu/Fermé
khatroucha Messages postés 4 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 7 mars 2015 - Modifié par KX le 4/03/2015 à 13:49
 Utilisateur anonyme - 7 mars 2015 à 19:26
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

Utilisateur anonyme
4 mars 2015 à 09:30
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).
0
khatroucha Messages postés 4 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 7 mars 2015
4 mars 2015 à 10:38
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?
0
Utilisateur anonyme
5 mars 2015 à 12:29
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
0
khatroucha Messages postés 4 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 7 mars 2015
6 mars 2015 à 17:40
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++;}
}
}
0
Utilisateur anonyme
6 mars 2015 à 19:46
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);
		}
	}
0
khatroucha Messages postés 4 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 7 mars 2015
7 mars 2015 à 08:31
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)
0
Utilisateur anonyme
7 mars 2015 à 19:26
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);
		} 
	} 
0