Trasformare una stringa con operazione numerica

di il
1 risposte

Trasformare una stringa con operazione numerica

Salve ragazzi ho la necessità di trasformare una stringa con una operazione matematica in un vero e proprio calcolo, mi chiedevo fosse possibile trovare una funzione già "pronta" per intenderci vorrei che la stringa "5+3" venisse valutata come espressione matematica 5+3 è possibile?? grazie:-)

1 Risposte

  • Re: Trasformare una stringa con operazione numerica

    broke31 ha scritto:


    salve ragazzi ho la necessità di trasformare una stringa con una operazione matematica in un vero e proprio calcolo, mi chiedevo fosse possibile trovare una funzione già "pronta" per intenderci vorrei che la stringa "5+3" venisse valutata come espressione matematica 5+3 è possibile?? grazie:-)
    Sappi che all'interno del frameword di Java SE non c'è nulla per questo. Non è un semplice "parsing" come fanno i vari parseInt, parseLong, NumberFormat ecc... del framework. Si tratta di una analisi più complessa della stringa che comporta l'uso di un bel po' di logica e anche di strutture dati.

    Ti consiglio di cercare in rete un "valutatore di espressioni matematiche" (cerca parole come java math expression parser o evaluator). Esiste sicuramente più di una libreria Java per questo. Mi ricordo di una (l'avevo anche provata in passato) che si chiama JEP, c'era la versione commerciale (a pagamento) ma anche la versione open-source. Non so dire se esiste ancora e se è ancora in sviluppo.

    Se volessi realizzare tu un valutatore di espressioni .... beh, sì, si può fare ma non è affatto banale ed è difficile proporzionalmente alle funzionalità che vuoi gestire che possono essere tipicamente:
    - interpretazione di raggruppamenti con le parentesi es. "5 * (4 + 6)"
    - interpretazione di variabili es. "5 + xyz" che possono essere "iniettate" nel valutatore.
    - interpretazione di funzioni es. "2 + sqrt(5)" dove il nome della funzione è ovviamente associato a del codice Java.
    Fare queste cose richiede un bel impegno dal punto di vista del design delle classi, della logica e dell'uso di apposite strutture dati (tipicamente alberi) per rappresentare l'espressione.
    Se non devi farlo per motivi "didattici" o di studio (e da quanto hai detto non è così) .... consiglio: usa qualcosa di già fatto.
Devi accedere o registrarti per scrivere nel forum
1 risposte