Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    parsare una espressione matematica

    Salve a tutti, devo parsare una stringa java

    es.

    String x = "(4+4)*2";

    mi serve un comando che da questa espressione mi tragga

    int y = 16;

    come posso fare? ho provato con il comando Integer.parseInt(String) ma niente, quando arriva alle parentesi mi parte un'eccezione.

    help!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: parsare una espressione matematica

    Originariamente inviato da cicciosino
    String x = "(4+4)*2";

    mi serve un comando che da questa espressione mi tragga

    int y = 16;

    come posso fare? ho provato con il comando Integer.parseInt(String) ma niente, quando arriva alle parentesi mi parte un'eccezione.
    No, nel framework standard di Java non c'è nulla che sia in grado di "valutare" espressioni matematiche. Tanto meno parseInt che tratta solo un valore numerico.

    Le soluzioni:
    a) usi una libreria esterna dedicata a questo (parsing/valutazione di espressioni matematiche).
    b) lo implementi tu utilizzando anche strutture dati appropriate.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: parsare una espressione matematica

    a) usi una libreria esterna dedicata a questo (parsing/valutazione di espressioni matematiche).


    Sapresti consigliarmene?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: parsare una espressione matematica

    Originariamente inviato da cicciosino
    Sapresti consigliarmene?
    C'è la JEP, è un po' vecchiotta perché hanno preferito portare avanti la versione "commerciale". Se ti serve per studi, esercizi o altro di simile potrebbe andarti bene.

    Altre due che trovato proprio in questo momento: JEval e exp4j .

    JEP l'avevo provata in passato, le altre due no, non ti so dire.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    come non detto, mi servirebbe un metodo che prende in input una stringa e che ritorna un valore int, qualche idea?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cicciosino
    come non detto, mi servirebbe un metodo che prende in input una stringa e che ritorna un valore int, qualche idea?
    Ma che faccia solo il parsing di 1 valore intero o long ecc...? (allora parseInt & company)
    O che "interpreti" e calcoli una espressione matematica più o meno complessa? (allora ho già risposto nei messaggi precedenti!)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Qui: https://github.com/Vincenzo1968/Oper...cedenceParsing trovi un'implementazione dell'algoritmo chiamato "operator precedence parsing".

    Non è potente come le librerie seegnalate da andbin(non ci sono, per esempio, funzioni built-in) ma fa quello che chiedi: prende in input una stringa contenente un'espressione aritmetica e restituisce il risultato(come double).

    Gli operatori gestiti sono: +, -, *, /, ^(elevamento a potenza) e il meno unario. Puoi usare le parentesi per gestire la precedenza.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.