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 :

StringTokenizer pour remplir un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 70
    Points
    70
    Par défaut StringTokenizer pour remplir un tableau
    Bonjour,

    J'ai un petit problème dans mon implémentation, pourquoi ça marche pas?
    (oulala, c'est lundi, pardonnez moi!)

    Bon, pour éviter de poster en chanson mon post, je vais faire vite:

    J'ai une chaine qui ressemble a cela:

    elt1/elt2/elt3;elt1/elt2/el3;...;elt1/elt2/elt3


    Je voudrais remplir un tableau avec ces valeurs comme ceci:

    [[elt1, elt2, elt3],[...], ..., [elt1, elt2, elt3]]


    J'ai essayé de faire deux stringtokenizer imbriqué, mais ca ne marche pas comme je le souhaite, je ne sais pas ou faire mon nextToken...

    J'ai qqch dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    		String[][] tab;
    		StringTokenizer st = new StringTokenizer("ceci/est;un/test", ";");
    		while (st.hasMoreTokens()) {
    			StringTokenizer st2 = new StringTokenizer(st.nextToken(), "/");
    			while (st2.hasMoreTokens()) {
    				BVLog.bvlog(1,1,"====test St2 = " + st2 + "=====");
    			}
    		}

    Mais bon, je ne sais pas comment ca va remplir le tableau...

    En plus, c'est une magnifique boucle infinie que je fais là.... -_-


    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
    50
    51
    52
    53
    ...
    Mon Nov 27 16:16:13 2006 (1164640573.925476) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925501) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925526) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925556) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925582) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925607) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925632) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925658) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925683) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925708) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925733) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925758) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925783) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925808) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925833) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925858) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925883) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925909) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925934) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925959) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.925984) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926009) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926034) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926060) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926085) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926114) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926140) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926166) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926191) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926216) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926241) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926267) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926292) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926317) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926341) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926366) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926392) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926417) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926442) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926467) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926492) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926517) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926542) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926567) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926889) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.926924) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.927060) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.927091) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.927123) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.927149) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    Mon Nov 27 16:16:13 2006 (1164640573.927174) bvsmgr_nopure[1650]@DFS11:<12.839558241>:L1:S01 ====test St2 = java.util.StringTokenizer@ccc588=====
    ....

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			while (st2.hasMoreTokens()) {
    				BVLog.bvlog(1,1,"====test St2 = " + st2 + "=====");
    			}
    Je dirais que tu ne fais jamais de next ^^

  3. #3
    Membre confirmé Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Points : 474
    Points
    474
    Par défaut
    La boucle infinie, c'est parce que tu fais pas de st2.nextToken() dans la 2è boucle imbriquée .

    Sinon essaie ça :

    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
    String[][] tab;
    int i = 0 ;
    StringTokenizer st = new StringTokenizer("ceci/est;un/test", ";");
    tab = new String[st.countTokens()][] ;
     
    while (st.hasMoreTokens()) {
            int j = 0 ;
    	StringTokenizer st2 = new StringTokenizer(st.nextToken(), "/");
            String[] tab2 = new String[ st2.countTokens()] ;
    	while (st2.hasMoreTokens()) {
                    tab2[j] = st2.nextToken() ;
                    j++ ;
    	}
            tab[i] = tab2 ;
            i++ ;
    }

  4. #4
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 70
    Points
    70
    Par défaut
    Oh le c*n,

    J'ai ca comme résultat maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Mon Nov 27 16:28:52 2006 (1164641332.825147) bvsmgr_nopure[2059]@DFS11:<12.1154415105>:L1:S01 ====test St2 = java.util.StringTokenizer@1bc82e7=====
    Mon Nov 27 16:28:52 2006 (1164641332.825281) bvsmgr_nopure[2059]@DFS11:<12.1154415105>:L1:S01 ====test St2 = java.util.StringTokenizer@1bc82e7=====
    Mon Nov 27 16:28:52 2006 (1164641332.825462) bvsmgr_nopure[2059]@DFS11:<12.1154415105>:L1:S01 ====test St2 = java.util.StringTokenizer@1362012=====
    Mon Nov 27 16:28:52 2006 (1164641332.825584) bvsmgr_nopure[2059]@DFS11:<12.1154415105>:L1:S01 ====test St2 = java.util.StringTokenizer@1362012=====

    Mais je ne vois pas pourquoi j'ai pas de string, j'ai que des adresses..

    C'est normal docteur?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Après c'est un problème de toString :

    si tu mets ton Tokenizer dans un sysout, ca va afficher le toString du Tokenizer qui correspond à la zone mémoire sur laquelle il pointe actuellement.

    La valeur qui t'intéresse c'est le retour de la méthode nextToken() de ton Tokenizer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sysout(st2.nextToken());

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 70
    Points
    70
    Par défaut
    schniouf merci, je viens de voir ton post, on a posté quasi simultanément


    J'ai testé cela marche, j'avais pas pensé à l'affectation d'un tableau comme tu l'as fait, merci beaucoup!

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut remplir un graphe en utilisant les tokenizer sur un fichier
    Bonjour, je cherche un ptt coup de main pour resourdre mon probleme qui est le suivant:
    je dispose d'un fichier :
    section HEADER
    + name := son;
    - author := ’’Benoit Sonntag’’;
    section INHERIT
    - parent:father := father; // name of the slot doesn’t matter
    section PUBLIC // Full access.
    - change parent p:father <-
    (
    parent := p;
    );

    section PRIVATE // Access Private !
    + count:integer; // Data.
    section son // Other type access.
    + get count:integer <-
    (
    count
    );
    section mother,children // Access for only mother and children prototype.
    + inc <-
    (
    count := count + 1;
    );
    Je veux parser ce fichier en utilisant un tokenizer. le parsing s'arrete de qu'il tomble sur la chaine qui commence par section INHERIT.
    apres il va recupere la chaine - parent:father := father;
    qui ce trouve entre section INHERIT et section PUBLIC
    en traitant cette chaine , il va donner a un noed du graphe le nom Father. je vour sremerci d'avance.
    j'ai une partie de programme mais je pense il faut ajouter d'autre choses:
    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
     
    import java.io.*;
    import java.util.regex.*;
     
    class LireLigne 
    {
    	private static FileReader rd;
    	private static StreamTokenizer st;
     
      public static void affiche (String nomfichier)
      {
     
     
     try {
       // Creation du Tokenizer
               rd = new FileReader(nomfichier );
               st = new StreamTokenizer(rd);
               int token =0;
               int i=0;
     
       // Parser le fichier
     
               while (st.hasMoreTokens()) 
          {
                  token = st.nextToken();
                  String word = st.sval;
                  if(word.startsWith("section") )
                  	{  
     
                  	// ???????
     
                  	}
     
     
          }
     
          rd.close();
          } catch (IOException e) {}
      }
     
      public static void main (String args[])
    {
    	 Terminal.ecrireString("Entrer le nom du fichier à afficher: ");
         String nom = Terminal.lireString();
         affiche(nom);
     
    }
    }

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

Discussions similaires

  1. Comment réaliser une boucle pour remplir un tableau
    Par LVChatel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/04/2009, 11h20
  2. [Tableaux] Fonction pour remplir un tableau
    Par renaud26 dans le forum Langage
    Réponses: 10
    Dernier message: 27/01/2008, 10h19
  3. Problème pour remplir un tableau.
    Par sandball22 dans le forum C
    Réponses: 2
    Dernier message: 02/05/2007, 14h54
  4. Conseil pour remplir un tableau excel depuis USF
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2006, 11h15

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