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 :

Fonctionalite Eval en Java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut Fonctionalite Eval en Java
    J'ai une string qui contient des entiers et des operateurs: 60*60*24*5. Je veux la convertir en un int. Est-ce possible de le faire simplement sans recourir a une analyse detaillee du contenu de la string? Ce que j'ai implante a date est la methode suivante:

    private int getIntValue (String s)
    {
    // This method assumes that the only operator is a * (multiply)...
    String [] vals = s.split("\\*");
    int intValue = Integer.parseInt(vals[0]);
    for (int i = 1; i < vals.length; ++i)
    {
    intValue *= Integer.parseInt(vals[i]);
    }
    return intValue;
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Salut,

    il ne me semble pas qu'il existe une telle fonction dans Java.

    Bonne chance

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut
    Maintenant j'ai cela; c'est un peu complique mais ca marche je crois (a part le cas ou un diviseur serait eventuellement = 0 et pour les operateurs unitaires + & -)...

    private static int getIntValue (String s)
    {
    // Converts a string containing integers & operators (i.e., 60*60*25*5) into a single integer.
    // NOTE: For now, this method only supports "*" (multiply), "/" (divide), "+" & "-" operators...
    // Operators' precedence is as follows: /, then *, then -, then +:
    // 6/3*2 = 4, not 1!
    // 6-5+1 = 2, not 0!
    String [] vals = s.split("\\+");
    int intValue = getMinusValue(vals[0]);
    for (int i = 1; i < vals.length; ++i)
    intValue += getMinusValue(vals[i]);
    return intValue;
    }

    private static int getMinusValue (String s)
    {
    String [] vals = s.split("-");
    int intValue = getMultValue(vals[0]);
    for (int i = 1; i < vals.length; ++i)
    intValue -= getMultValue(vals[i]);
    return intValue;
    }

    private static int getDivValue (int v, String s)
    {
    String [] vals = s.split("/");
    int intValue = v * Integer.parseInt(vals[0]);
    for (int i = 1; i < vals.length; ++i)
    intValue /= Integer.parseInt(vals[i]);
    return intValue;
    }

    private static int getMultValue (String s)
    {
    String [] vals = s.split("\\*");
    int intValue = getDivValue(1, vals[0]);
    for (int i = 1; i < vals.length; ++i)
    intValue = getDivValue(intValue, vals[i]);
    return intValue;
    }

    Voici le resultat de mes tests:

    s=2*3/2+4*3+5-1, val=19
    s=2/3*2+2*3/2*3+4*3+5-1, val=25
    s=6/3*2, val=4
    s=5-6+1, val=0
    s=6-5+1, val=2
    s=5+6-1, val=10
    s=6+5-1, val=10
    s=6/2*3, val=9
    s=2*3/2, val=3

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    Il existe une API toute faite : JEP : Java math Expression Parser.

    Cordialement

    Fred

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

Discussions similaires

  1. Carte géo en Java + fonctionalité [Dijkstra]
    Par fido007 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 22/06/2010, 18h41
  2. Fonction eval en java ?
    Par ramislebob dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 00h22
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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