Задача: Составить таблицу значений функции y = f(x) на отрезке [n; m] с шагом k
Собственно вопрос возникает в моменте. Как ввести f(x). Ибо сама формула (для примера х-2), является строкой, а значение Y числом.
т.е. Через сканер вводим все значения n,m,k и саму формулу "x-2" или любую другую. И в коде эту формулу применяем для подсчета значение Y.
while(x<=r.m){
y=x-5;
System.out.println("x = " +x+" y = "+ y);
x=x+r.k;
}
В данном случае у меня стоит формула, введенная изначально "y=х-5" (вторая строчка, введено топорно, прямо в код), а мне надо, чтоб программа считала ту, которую я введу через сканер.
upd. После большого количества прочитанного и опробованного, хочется добавить, что введеное через сканер представляет собой цисловые значения, букву X и знаки арифметических вычислений ("+","-","/","*").
Ответ
Решение ленивого человека выглядит так:
import javax.script.*;
public class Eval
{
public static void main (String[] args) throws Exception
{
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
engine.put("x", 1);
System.out.println(engine.eval("x * 2 + 1"));
}
}
В Java есть полноценный движок JavaScript (на русском), который отлично справляется с вычислением произвольных математических выражений (и не только их).
Решение же человека, которому описанная задача прилетела в виде лабораторной работы или домашнего задания выглядит сложнее. Преподаватель, скорее всего, ожидает, что вы разберёте вводимую строку на токены (переменная, оператор, число), переведёте её в обратную польскую запись, а затем вычислите, используя стековую машину (раз, два).
Комментариев нет:
Отправить комментарий