JEval jak potęgować poprawnie i zrobić kalkulator

JEval jak potęgować poprawnie i zrobić kalkulator
  • Rejestracja: dni
  • Ostatnio: dni
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?

Kopiuj
				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

JacaDev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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ą.

JacaDev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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.

  • Rejestracja: dni
  • Ostatnio: dni
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 / +

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

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.