JEval jak potęgować poprawnie i zrobić kalkulator

0

Jak wykorzystać poprawnie bibliotekę JEval w typowym kalkulatorze?

Przykładowo 4+2^2 to się równa 8
Natomiast w JEval nie można użyć znaku ^ Zamiast niego jest pow(wartosc1, wartosc2) chciałbym jakoś uprościć potęgowanie wstawiając tylko znak ^
nie mogę tak po prostu wsadzić do wartosc1 "4+2" bo będzie to wyglądało tak jakby całość była w nawiasie i da wynik 36 zamiast 8
Jak prosto rozwiązać ten problem?

				private String txtAfisat="pow(4+2,2) ";
				Evaluator evaluator = new Evaluator();
				try {
					rezultat = evaluator.evaluate(txtAfisat);
				}

Function and variable names can not break any of the following rules:
can not start with a number
can not contain an operator (see the above list of operators)/li>
can not contain a quote character - single or double/li>
can not contain a brace character - open or closed/li>
can not contain one of the following special characters: #, ~ , ^ !

Strona biblioteki: http://jeval.sourceforge.net

0

Algorytm zmiany na ONP nie jest zbyt skomplikowany (nazywa się shunting-yard) . Możesz samemu go zaimplementować lub skądś skopiować.

0

Tak się składa, że JEval dobrze interpretuje np. takie równanie "2+2*2=6"
Chodzi o to, żeby skonwertować działanie tak żeby poprawnie wyświetlił wynik? Bo jak widać słabo jest zaimplementowane potęgowanie w JEval przy takim zadaniu.
Proszę o jakieś źródła (gotowce) które mi pomogą.

0

http://rosettacode.org/wiki/Parsing/Shunting-yard_algorithm#Java
Jeden z pierwszych wyników wyszukiwania w google. W JEval nie jest słabo zaimplementowane tylko inaczej.

0

hmm ciekawe
A jak później odczytać taki 3 + 4 * 2 / ( 1 - 5 ) 2 3 posortowany postfix: 3 4 2 * 1 5 - 2 3 / +

 infix:   3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3
postfix: 3 4 2 * 1 5 - 2 3 ^ ^ / + 

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