Parser do działań arytmetycznych w Javie

Parser do działań arytmetycznych w Javie
ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0

Szukałem przez pewien czas i nie mogłem tego znaleźć. Chodziłoby mi mniej-więcej o coś takiego:

Kopiuj
String a = "(15-7)*(8+6)"; //Wynikiem jest 112
int i = Parser.licz(a);
System.out.println(i); //Wydrukuje 112

Ma ktoś jakiś zaufany parser w postaci biblioteki/kodu źródłowego, który daje takie możliwości?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Dlaczego samemu sobie takiego nie napiszesz? Całkiem fajna i prosta zabawa ;)
Poczytaj o odwrotnej notacji polskiej.


No, chyba, że po prostu nie chcesz pisać tego samemu - wtedy `java math parser` w Google i do dzieła; wiele się nie będą różnić, wybierz jakiś, który posiada sensowne API i do dzieła! ;>

Edit: na przykład ten wydaje się być ok, chociaż może to być nieco zbyt wiele (zależy do czego chcesz go wykorzystać): http://code.google.com/p/symja/wiki/MathExpressionParser

VI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 212
0

Ja używałem https://code.google.com/p/expressionoasis/ i chwalę sobie.

MP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Ostatnio napotkałem się na jakiś Java Script który obliczał jakieś tam działania właśnie na Stringach. Musiał byś poszukać coś na temat Kalkulator Java, coś w tym stylu :) jak nie chcesz używać Java Script to zawsze zostaje Ci napisać jakąś klasę rozkładającą takie działania. Kiedyś podobne zadanie miałem żeby zrobić Kalkulator Graficzny w Javie i mój algorytm polegał na przeszukaniu Stringa od 0 do jego długości i przy napotkaniu jakiegoś znaku żeby zapisał ci pierwszą liczbę jako wynik później po znaku działania zapisał 2 liczbe jako Liczba2, zrobił działanie (wynik "działanie" liczba2) i zapisał w wyniku i leciał dalej (jak potrzebujesz wiele działań obliczyć) wbrew pozorom to nie jest takie trudne.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0
Mateusz P. napisał(a)

Ostatnio napotkałem się na jakiś Java Script który obliczał jakieś tam działania właśnie na Stringach.

Java != JavaScript
W JS sprawa jest banalna: używa się funkcji eval, która załatwia wszystko za nas.

Kiedyś podobne zadanie miałem żeby zrobić Kalkulator Graficzny w Javie i mój algorytm polegał na przeszukaniu Stringa od 0 do jego długości i przy napotkaniu jakiegoś znaku żeby zapisał ci pierwszą liczbę jako wynik później po znaku działania zapisał 2 liczbe jako Liczba2, zrobił działanie (wynik "działanie" liczba2) i zapisał w wyniku i leciał dalej (jak potrzebujesz wiele działań obliczyć) wbrew pozorom to nie jest takie trudne.

Twoja metoda jest "upośledzona" - nie uwzględnia kolejności wykonywania działań.
Już podałem najlepsze rozwiązanie (pomijając pisanie całego parsera z gramatyką, które byłoby po prostu ultra najlepszym ;P) - ONP.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.