@ZadrotPro

Как вычислить значение строки, аналог eval в java?

Есть строка со случайным выражением, например:
"3243-854+6-100"
Как найти ее значение в java?
В perl это делалось так
my $vaule = eval '3243-854+6*100'; # 2295
  • Вопрос задан
  • 8148 просмотров
Решения вопроса 1
Scorpi
@Scorpi
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");        
Object result = engine.eval("3243-854+6-100");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@cbgx74
Собственно ответы думаю отсюда stackoverflow.com/questions/2605032/using-eval-in-java
Ответ написан
Комментировать
@FoxInSox
JEL:
import gnu.jel.CompilationException;
import gnu.jel.CompiledExpression;
import gnu.jel.Evaluator;
import gnu.jel.Library;

public class Main {

	private static final String EVAL_VALUE = "3243-854+6-100";

	public static void main(String[] args){
		JELSample();
	}

	private static void JELSample(){

		try {
			Class[] staticLib = new Class[1];
			staticLib[0] = Class.forName("java.lang.Math");
			Library lib = new Library(staticLib, null, null, null, null);
			CompiledExpression compiledExpression = Evaluator.compile(EVAL_VALUE, lib);
			Object result = compiledExpression.evaluate(null);
			System.out.println("JEL: " + result);
		} catch (CompilationException e) {
			e.printStackTrace();
		} catch (Throwable throwable) {
			throwable.printStackTrace();
		}
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы