Parser do działań arytmetycznych w Javie

0

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

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?

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

0

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

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1