Как превратить строку в формулу?

240
04 января 2022, 04:30

Допустим, я прошу пользователя ввести любую формулу графика, для простоты пусть это будет

"y = x^n" где n — любая степень, которую может ввести пользователь 

Строку можно получить так:

 String str = formulafield.getText();
 str.toLowerCase();
 String [] arr = str.split("y = ");
 String formula = arr[0];

можно заменить "^" на "pow(r,"

formula.replaceAll("^", "pow(r,");

Получится строка

 "xpow(r,n"

Затем находим символы.

int xIndex = formula.indexOf('x');
int commaIndex = formula.indexOf(',');

Затем заменяем 'r' на 'x'

formula.replase('r', 'x');
if(xIndex==0){
formula.replace('x','');
}

получим строку

 "pow(x,n"

Далее добавим к этой строке скобку и точку с запятой

 String fullformula = formula.concat(");");

Можно ли как-то получившуюся строку

 "pow(x,n);"

Превратить в

 Math.pow(x, n); ?

Подскажите алгоритм

Answer 1

Можно использовать exp4j https://www.objecthunter.net/exp4j/

String str = formulafield.getText();
str.toLowerCase();
String [] arr = str.split("y = ");
String formula = arr[0];
Expression e = new ExpressionBuilder(formula)
.variables("x")
.build()
.setVariable("x", 2.3);
double result = e.evaluate();

Это отработанная вещь вычисление выражений.

READ ALSO
Как сделать такие разрывы в border?

Как сделать такие разрывы в border?

С помощью псевдоэлэментов, градиента или же другие методы?

199
Редактировать .SVG для анимации - XML

Редактировать .SVG для анимации - XML

Как правильно повернуть диск этого image?

196
Django 2 Настройка системы комментариев

Django 2 Настройка системы комментариев

Проблема следующая: когда я добавляю новый комментарий под публикацией на своем сайте, он отображается нормально, но если вдруг зажать какую-либо...

86
Как перегружать оператор +?

Как перегружать оператор +?

Как лучше перегружать оператор +: через friend функцию внутри класса или как inline функцию вне класса?

206