Wklepywanie funkcji z klawiatury

0

Witam,
Mam pytanie, potrzebuje w moim programie po jego uruchomieniu wpisywać dowolną funkcję z klawiatury na której potem program będzie działał, liczył na niej.
Pytanie w jaki sposób to zrobić w jednym ciągu?
Np. po uruchomieniu programu w wpisuje sobie dowolna funkcję, może być x^2+2*3 i podaje wartosc x np.1
I chce móc obliczyć wartość tej podanej funkcji dla x=1
Dziękuję za pomoc i pozdrawiam :)

0

Stwórz dwie tablice: liczby i znaki (ustal iż x jest liczbą; jako że między dwoma liczbami zawsze jest znak).
Każdy za znaków funkcji dodaj do odpowiedniej z tablic.
Zamień x na podaną liczbę.
Biorąc pod uwagę kolejność wykonywania działań dopasuj odpowiednie warunki, np.

pętla każdy znaki
  jeśli znak = '*'
    kolejna liczba = liczba * kolejna liczba
koniec pętli
pętla każdy znaki
  jeśli znak = '+'
    kolejna liczba = liczba + kolejna liczba
koniec pętli

Wynik powinien znajdować się w ostatniej komórce tabeli.
Tak właśnie sobie to wyobrażam ;)

0

A może tak na leniwca:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

class Ideone {
  public static void main(String args[]) {
  	  ScriptEngineManager manager = new ScriptEngineManager();
     
    ScriptEngine engine = manager.getEngineByName("js");
    try {
      String input = "Math.pow(x,2)+2*3";
      int x = 1;
      engine.put("x", x);
      Object result = engine.eval("y = "+input+";");
    System.out.println(String.format("%s dla x=%d = %s",input,x,result));
     } catch (ScriptException e) {
      System.err.println(e);
    }
  }
}

http://ideone.com/PYFUe6

Tyle, że cale wyrażenie funkcji musiałoby być w tym przypadku w javascripcie. Zależy jakie masz wymagania odnośnie tego co wpisujesz ale mój przykład można by trochę przerobić i próbować zastępować x^2 wywołaniem Math.pow z javascript, tak, żeby nie trzeba tego wpisywać z konsoli. Tylko, że to oznacza parsowanie wpisywanego tekstu, czego chciałem uniknąć ;)
Rozwiązanie bezczelnie zerżnąłem i przerobiłem stąd: http://www.java2s.com/Tutorial/Java/0120__Development/VariablesboundthroughScriptEngine.htm

1 użytkowników online, w tym zalogowanych: 0, gości: 1