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

Langage Java Discussion :

Pb avec stringTokenizer


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut Pb avec stringTokenizer
    Bonjour,

    Voila je veux spliter une chaine, j'utilise pour ça StringTokenier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public List getListUnderCountries(String countries){
        	String delim =";";
        	StringTokenizer chaineCountries = new StringTokenizer(countries, delim);
        	List countriesList = new ArrayList();
        	while (chaineCountries.hasMoreTokens()){
        		System.out.print(chaineCountries.nextToken());
        		countriesList.add(chaineCountries.nextToken(delim));
        	}    	
        	return countriesList;
        }
    ma chaine est FR;AT;DE;IT

    la il ne m'affiche que
    FR
    DE


    Je ne comprend pas pourquoi

    quelqu'un voit ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu devrais écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] countryArray = countries.split(";");
    C'est plus simple

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    oui mais c pas mieux

  4. #4
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Le problème vient du fait que tu fais appelles deux fois à la méthode nextToken, à chaque appel de cette méthode tu décales la position de l'index.

    Essai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public List getListUnderCountries(String countries){
        	String delim =";";
        	StringTokenizer chaineCountries = new StringTokenizer(countries, delim);
        	List countriesList = new ArrayList();
        	while (chaineCountries.hasMoreTokens()){
                     String t = chaineCountries.nextToken()
        		System.out.print(t);
        		countriesList.add(t);
        	}    	
        	return countriesList;
        }
    Ca devrait mieux fonctionner!

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Bonjour,

    A chaque fois que tu appelles la méthode nextToken() tu lis la valeur et tu décalles.

    System.out.print(chaineCountries.nextToken()); --> tu affiches FR et tu décalles

    countriesList.add(chaineCountries.nextToken(delim)); --> tu mets AT dans countriesList et tu décalles

    System.out.print(chaineCountries.nextToken()); --> tu affiches DE et tu décalles

    etc...

    Mieux vaut créer une variable temporaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String strTemp = null;
    while (chaineCountries.hasMoreTokens()){
       strTemp = chaineCountries.nextToken();
       // Traitements
    }
    Edit : Pas assez vif

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Ah la boulette, merci beaucoup

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par gloglo Voir le message
    oui mais c pas mieux
    En fait, si c'est mieux:
    Citation Envoyé par javadoc
    StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
    Et le code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List getListUnderCountries(String countries){
             String[] array = countries.split(";");
             return Arrays.asList(array);
    }

  8. #8
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Citation Envoyé par Sanguko Voir le message
    En fait, si c'est mieux:


    Et le code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List getListUnderCountries(String countries){
             String[] array = countries.split(";");
             return Arrays.asList(array);
    }
    Je pense que Gloglo parlait du fait que celà ne resolvait pas son problème

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

Discussions similaires

  1. Problème avec StringTokenizer
    Par DjeXtoR dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 27/11/2008, 09h20
  2. Probleme avec StringTokenizer
    Par LP-mpascolo dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2008, 09h24
  3. Réponses: 8
    Dernier message: 27/04/2008, 15h27
  4. Problemes avec StringTokenizer
    Par michaelbob dans le forum Langage
    Réponses: 15
    Dernier message: 16/08/2006, 14h06
  5. Petit problème avec StringTokenizer
    Par mygwel dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2006, 18h22

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