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 :

Debutant("Tokenizer" un string


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut Debutant("Tokenizer" un string
    Salut tout le monde! Voila je suis un bleu et je voudrais savoir comment splitter un String en Tokens. Les TOKENS GENERES DOIVENT ETRE RETOURNES DANS LE DESORDRE( en Random quoi) C'est ce que je n'arrive pas a faire!
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Tu ne peux pas faire directement. Il te faut créer une classe qui s'en occupe.
    Cette classe prend en paramètre la chaîne à découper et éventuellement le délimiteur. Ensuite, il te faut une méthode du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String getRandomToken()
    A la construction, ta classe splitte la chaîne avec la méthode split.
    Ta méthode getRandomToken retourne un des éléments du tableau obtenu avec le split.

    J'espère avoir été clair Sinon, je tâcherai de mettre une solution

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Citation Envoyé par Fifan31
    Tu ne peux pas faire directement. Il te faut créer une classe qui s'en occupe.
    Cette classe prend en paramètre la chaîne à découper et éventuellement le délimiteur. Ensuite, il te faut une méthode du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String getRandomToken()
    A la construction, ta classe splitte la chaîne avec la méthode split.
    Ta méthode getRandomToken retourne un des éléments du tableau obtenu avec le split.

    J'espère avoir été clair Sinon, je tâcherai de mettre une solution
    Le programme doit pouvoir lire n importe quel string en commande line , en input et ensuite retourner le meme string en random... seule sa forme initiale n'est pas acceptee!! Une fois encore je suis un bleu!!

    Merci

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] tab = taString.split();
    Collections.shuffle(Arrays.asList(tab));
    Là tu as tes tokens mélangés dans tab...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut J'y arrive pas!
    Salut
    Le Programme prend en input un String et le decoupe en tokens! jusque la pas de probleme, mais ce que j'arrive pas faire c'est de "randomiser" les tokens c-a-d obtenir une sortie aleatoire des tokens!

    Merci

    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
    import java.util.StringTokenizer;
     
    class  StringSplitter{
     
            public static void main(String[]args){
                    if (args.length == 1) { 
                            StringTokenizer st = new StringTokenizer(args[0], " ,.");
                            String[] tokens = new String[st.countTokens()];
                            int i=0;
                            while (st.hasMoreTokens()) {
                                    tokens[i]=st.nextToken();
                                    i++;    
                            }
                            for (i=0;i<tokens.length;i++) {
                                System.out.println(tokens[i]);
                            }
                    }
                    else {
                            System.out.println("Un String please!");
                            System.exit(1);
                    }
            }
    }

  6. #6
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Ca ne risque pas, tu n'as pas de fonction aléatoire dans ta procédure.

    Quelque part, il faut faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    de i = 0 à imamx-1 faire
    {
      j = valeur aléatoire de i entre 0 et imax
      vérifier que le nouveau j ne correspond pas à un i dèja affecté
    }
    afficher le tableau indexé en j
    Cordialement.

    Pierre

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    En quoi le shuffle de rom ne te convient pas ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Celui de Rom marche "partiellement" on peut tomber sur la forme initiale du string, ce que je veux pas! c le seul probleme!!

  9. #9
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben alors simplement ça non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String[] tab = taString.split();
    String[] newTab;
    do {
    List maListe = Arrays.asList(tab);
    Collections.shuffle(maListe);
    newTab = (String[]) maListe.toArray(maListe.size());
    } while (Arrays.equals(tab,newTab));

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

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