Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Расчет по пользовательским формулам / 9 сообщений из 9, страница 1 из 1
10.12.2012, 12:59:42
    #38072283
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Что есть в Java для сабжа? Пользователь вводит свою расчетную формулу (оформленную специальным образом), указав переменные и получает результат, либо сообщение об ошибке.
...
Рейтинг: 0 / 0
10.12.2012, 13:02:44
    #38072294
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
JavaCC, возможно.
http://javacc.java.net/
...
Рейтинг: 0 / 0
10.12.2012, 13:46:40
    #38072410
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Максим Н,

Если задача не учебная, можно попробовать взять какую-нибудь реализацию JSR-223 (Например, beanshell или groovy, в JDK встроена поддержка JavaScript) и использовать его.

Такой метод не сработает, если язык четко ограничен и это будет проверятся.
...
Рейтинг: 0 / 0
10.12.2012, 13:55:12
    #38072429
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Тут есть пример со Скрипт-Енджайн. Может подойдет.

Код: java
1.
2.
3.
ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");        
    Object result = engine.eval("3+4");
...
Рейтинг: 0 / 0
10.12.2012, 13:55:34
    #38072431
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Код: java
1.
2.
3.
4.
5.
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String text = "var result=1+2;";
engine.eval(text);
System.out.println(engine.get("result"));
...
Рейтинг: 0 / 0
10.12.2012, 13:59:10
    #38072440
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Столкнулись в дверях.
...
Рейтинг: 0 / 0
10.12.2012, 21:19:39
    #38073255
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
All,
Спасибо, более менее понятно.
Ачто если мне нужно в формуле использовать не стандартные арифметические операции и операнды-константы, а java-методы и переменные из java-пргограммы?

Например:

5+testclass.dispersion('CollectionName')*10

Т.е. есть мой собственный статический метод расчета дисперсии (это например, по факту чего угодно) на вход я передаю ему имя коллекции (из NOSQL базы), или имя таблицы из реляционки или имя массива, что угодно.

Т.е. что то наподобие eval'а.


ПС извиняюсь за сумбур, просто сам еще не могу понять, что мне надо ...
...
Рейтинг: 0 / 0
10.12.2012, 22:01:16
    #38073297
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
Максим Н,

Ну мы юзаем beanshell, но когда мы начинали писать - то о груви не слышали еще, о ScriptEngine тем более - вроде говорят что последние быстрее. но у нас полет нормальный
...
Рейтинг: 0 / 0
11.12.2012, 12:43:21
    #38073952
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет по пользовательским формулам
All,

Еще раз всем спасибо, ScriptEngine (пока) то что нужно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Расчет по пользовательским формулам / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]