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 :

découper une expressions


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut découper une expressions
    Bonjours,
    je voudrais découper une expression et placer celle ci dans un tableau.
    par exemple j'ai.

    12+35*84/41-74

    j'obtient dans mon tableau i.

    i[0] = 12 ; i[1] = + ; i[2] = 35 ; i[3] = * ......

    -Comment faire pour découper l'expression ? merci.

    De plus pour le tableau doit-je utiliser :
    String[] MonTableau = ....
    ou ArrayList<String> MonTableau .....
    ??
    merci de votre aide

  2. #2
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    regardes là :
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 201
    Points : 173
    Points
    173
    Par défaut
    salut.
    si j'ai bien compris la methode split(String) te sera bien utille, le string a l'interieur de split() ne sera pris en compt dans le tableau,cependant tu peut separé les champ du tableau comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //le caractere '|' sera mis dans split()
    String str="21|*|12|/|52|-|47|"
    String tab[]= new String[10]
    for (int i=0;i<=str.length;i++) {
              tab[i]=str.split("|");
    }
    /* a chaque fois ou en rencontre un '|' ce qui est avant entre dans le tableau */
    il a une autre methode, je crois que c toArray() amis je me r'appel pas bien de la synthax de la methode, mais split c la mellieur.

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 201
    Points : 173
    Points
    173
    Par défaut
    j'ai oublier a la place de str.length tu met tab.length mais ca marcherai dans les deux cas.

  5. #5
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    StringTokenizer est plus adapté je pense ....

    je ne sais pas ce que tu veux faire mais il existe déjà pleins d'APIs qui parsent des expressions mathématiques dont :
    http://www.singularsys.com/jep/

    il y en a d'autres sur :
    http://java.developpez.com/outils/api/

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    et accessoirement si tu cherches à faire un interpréteur d'expressions mathématiques (ce qui n'est peut être pas le but......) je te recommande plutôt d'utiliser un arbre

    Pour ton expression ça donnerai, si l'on commence la lecture par les branches gauche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                                  +
                                /    \
                              12      -
                                     /  \
                                    *   74
                                  /   \
                                35      /
                                      /  \
                                    84  41
    Ce sera un tant soit peu plus simple que de gérer les opérations et priorités dans un tableau (tu risques de sévèrement t'embrouiller les pinceaux)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre actif Avatar de fremsoi
    Inscrit en
    Août 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par sinok
    et accessoirement si tu cherches à faire un interpréteur d'expressions mathématiques (ce qui n'est peut être pas le but......) je te recommande plutôt d'utiliser un arbre
    Dans le cas d'utilisation d'un arbre, il ne faut pas utiliser une notation arithmétiques préfixés ?

  8. #8
    Membre actif Avatar de fremsoi
    Inscrit en
    Août 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    En tout cas ce qui est sur c'est que l'utilisation d'un split est plutot déconseillé dans ce type de découpage

    Le split sert plus à découper une chaine qui contient un séparateur unique
    ex : 1;2;3;4;5;8;41;45;

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans le cas d'utilisation d'un arbre, il ne faut pas utiliser une notation arithmétiques préfixés ?
    Si si (sacrée notation polonaise .........)
    avec l'arbre proposé ça donne bien
    + 12 - * 35 / 84 41 74
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Membre actif

    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 229
    Points
    229
    Par défaut
    est ce que les expression que tu va traiter sont uniquement des expressions mathématiques ?

    dans ce cas l'emploi d'une bibliotheque deja existante (comme le suggere bubu56) te permet d'accelerer le travail

    dans le cas ou ton application ne se limite pas aux expressions mathématiques, tu peux utiliser les expressions regulieres qui sont tres puissant et rapides pour la recherche, le decoupage ...(la methode split() les utilise et ça la rend effectivement meilleure d'apres ce que j'ai lu)

Discussions similaires

  1. Découper une chaine séparée par des ; SQL SERVER 2005 express
    Par DESPREZ dans le forum Développement
    Réponses: 2
    Dernier message: 06/11/2008, 10h09
  2. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  3. [String] rendre une expression reguliere insensible à la case
    Par chimical dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/05/2004, 11h38
  4. "Différence de type dans une expression" Tquery
    Par Hakim dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2004, 00h22
  5. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06

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