我寫了一個計算像正弦不同功能的項目,MCM等不使用現有的包像Java中 數學,現在我想在一個字符串,然後打印的形式從用戶的表達出來的結果
像:包含在Java函數計算表達式
import java.util.Scanner;
public class Phase2main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String expression ;
double result = 0 ;
System.out.println(" Enter your desired expression from the available functions ");
expression = s.nextLine();
System.out.println("Result is : " + result);
}
}
那麼它應該運行這樣的: 輸入表達式:ADD(DIV(SIN(FACT(3)),CEIL(TAN(MUL(1.5,FIB(4) )))),GCD(2,10)) 結果是:1.94
我該怎麼辦讓程序來識別我的功能,如CEIL和他們的輸入? 我已經檢查了很多類似的問題,但我發現的那些庫太複雜了,無法理解,或者做了基本的算術運算而沒有識別函數和它們的輸入
所以我怎麼寫一個簡單的評估器這個具體問題?
你可以做到這一點通過使用[ OGNL](http://commons.apache.org/proper/commons-ognl/)。它很容易使用。你可以創建一個上下文並用它表達它。 – bhdrkn 2014-12-05 15:32:56
這是一個令人難以置信的廣泛問題。如果你想要識別函數 - 使用任何解析器(或自己寫 - 這裏有很多指南)。如果你在評估時需要幫助 - 那麼這個問題類似於「幫我寫我自己的Wolfram Alpha!「 – Ordous 2014-12-05 15:35:12
除非你找到一個符合你需要的語法的庫,否則你的問題沒有簡單的解決方法。你必須藉助javacc,antlr或eclipse Xtext等解析器生成器編寫你自己的解析器。 – nomoa 2014-12-05 15:35:58