IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

DEBUTANT ArrayList & StringTokenizer


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut DEBUTANT ArrayList & StringTokenizer
    Bonjour, Un petit problem sans doute logique, mais pas pour un débutant!!!

    Voila, je créé un String représentant un opération simple ("1+2+3+4+5+6+7+8+9") je place les chiffre dans une 1ere ArrayListe et les opérateur dans une 2ème... jusque là tout marche.
    Mais lorsque j'affiche indice par indice le contenue de mes ArrayList celle-ci sont à l'envers en indice 0 j'ai 9 ; en 1 j'ai 8 ; ... et vis et versa !!!
    Pour moi c'est incompréhensible mais c'est sans doute pas étonnant vu mon niveau!!!
    Quelqu'un pourrait-il me donner l'explication???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import java.util.*;
     
    public class StringTokenizerTest {
     
        public static void main(String[] args) {
     
          try {
     
            ArrayList<String> listeChiffre = new ArrayList<String>();
            ArrayList<String> listeOperateur = new ArrayList<String>();
     
            //Scanner readK = new Scanner(System.in);
            //System.out.println("Entrez le calcul : ");
            //String calcul = readK.next();
     
            String calcul = "1+2+3+4+5+6+7+8+9";
     
            StringTokenizer st = new StringTokenizer( calcul ,"+");
     
            while (st.hasMoreTokens()) {
            	int i = 0;
    			listeChiffre.add(i++,st.nextToken());
            }
     
            System.out.println("Taille de la liste des chiffres : " + listeChiffre.size());
            int i = 0;
        	for(String laCase : listeChiffre) System.out.println("En indice "+ i + " il y a la valeur : " + listeChiffre.get(i++));
        	//for(int j=0 ; j<liste.size() ; j++) System.out.println("En indice "+ j + " il y a la valeur : " + liste.get(j));
     
     
        	StringTokenizer st1 = new StringTokenizer( calcul ,"0123456789,.");
             System.out.println(calcul);
            while (st1.hasMoreTokens()) {
            	int j = 0;
    			listeOperateur.add(j++,st1.nextToken());
            }
     
            System.out.println("Taille de la liste des operateurs : " + listeOperateur.size());
      		int j = 0;
        	for(String laCase : listeOperateur) System.out.println("En indice "+ j + " il y a la valeur : " + listeOperateur.get(j++));
          }
          catch (Throwable t)
          {
          System.out.println("Erreur : " + t.getMessage());
          }
     
     
        }
    }
    Merci d'avance pour toute réponse, je n'ai rien trouvé dans la FAQ ou sur les forums.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Dans ta boucle d'ajout tu réinitialises i à 0 à chaque itération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            while (st.hasMoreTokens()) {
            	int i = 0;
            	listeChiffre.add(i++,st.nextToken());
            }
    Ce qui fait que tu ajoutes toujours l'élément en position 0, c'est à dire en début de liste...

    Tu devrais plutôt laisser la liste gérer les index comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            while (st.hasMoreTokens()) {
    			listeChiffre.add(st.nextToken());
            }

    De plus, je te conseille d'éviter d'abuser de l'opérateur i++, et d'utiliser de préférence un for lorsque tu veux itérer sur un index...

    a++

  3. #3
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    merci adiGuba pour ta solution.

    C'est vrai qu'avec ton explication je me rend mieu compte de mon erreur

    Etant novice en programmation je souffre d'un ENORME manque de logique

    Je saurrai desormé qu'un for est sans doute mieu adapté dans se cas là pour éviter cette erreur!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ArrayList vs StringTokenizer
    Par raspac dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/07/2008, 17h04
  2. [Debutant]PB de StringTokenizer
    Par megapacman dans le forum Langage
    Réponses: 4
    Dernier message: 24/10/2007, 18h42
  3. [Débutant][ArrayList]parcours et recherche d'objets
    Par codexomega dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/02/2006, 18h14
  4. [Débutant(e)] StringTokenizer
    Par laclac dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 10/02/2006, 11h26
  5. [Debutant] StringTokenizer problem
    Par berg dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/09/2005, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo