Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Формула в строку Java

Задача: Составить таблицу значений функции 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 (на русском), который отлично справляется с вычислением произвольных математических выражений (и не только их).
Решение же человека, которому описанная задача прилетела в виде лабораторной работы или домашнего задания выглядит сложнее. Преподаватель, скорее всего, ожидает, что вы разберёте вводимую строку на токены (переменная, оператор, число), переведёте её в обратную польскую запись, а затем вычислите, используя стековую машину (раз, два).

Комментариев нет:

Отправить комментарий