Pytanie w sprawie string, java, math, operation – Czy mogę przekonwertować ciąg znaków na operację matematyczną w Javie?

7

czy mogę przekonwertować ciąg taki jak „3 * 3 + 3” na operację matematyczną w Javie ??

Twoja odpowiedź

2   odpowiedź
11

Oceń, że używa JavaScriptScriptEngine

String xyz = "3*3+3";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("JavaScript");        
Object result = se.eval(xyz);

Odniesienie:Dokumentacja

Jest to potencjalnie bardzo niebezpieczne i zakłada, że ​​całkowicie ufasz źródłu łańcucha xyz. Pozwala to na wykonanie dowolnego JavaScript. Na przykład spróbuj ustawienia xyz to „while (true);”. Widziećstackoverflow.com/questions/1601246/… . johusman
Rozumiem co masz na myśli. W tym przypadku xyz należy dopasować za pomocą wyrażenia regularnego, aby upewnić się, że zawiera tylko liczby i operatory matematyczne Anirudh Ramanathan
3

musiałbyś zaimplementować parser. Można jednak również wyszukać gotowy projekt, taki jak:http://sourceforge.net/projects/jep/ lubhttp://code.google.com/p/symja/wiki/MathExpressionParser

Jeśli tego potrzebujesz, to tak. OP nie motywowało go jednak, a twierdzenie, że nie ma wbudowanej funkcji, jest, cóż, mylące --- z wyjątkiem sytuacji, gdy zdecydujesz się zinterpretować pytanie na temat reprezentacji wyrażenia, a nie jego wyniku. Marko Topolnik
masz na myśli JavaScript Engine? To działa, ale myślę, że to zbyt wiele, a funkcjonalność jest ograniczona. Lepiej używać wyspecjalizowanych bibliotek. Elchin
@Marko - czy możesz wyjaśnić? Brian Agnew
@BrianAgnew Wystarczy spojrzeć na odpowiedź z najwyższą liczbą głosów. Z wyjątkiem, jeśli naprawdę wierzysz, że pytanie dotyczy zdobyciareprezentacja wyrażenia, które wątpię. Ale nie ma potrzeby się kłócić. Marko Topolnik

Powiązane pytania