Страницы

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

четверг, 9 января 2020 г.

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

#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 и знаки арифметических
вычислений ("+","-","/","*"). 
    


Ответы

Ответ 1



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

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

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