私はこれをサーバーの応答として持っています:
"[(sin(1+3*4)+2)/7]+10"
この応答は、1、3、4、2、7、および10がDB(mysql)上のある種のインデックス項目であり、何度も評価する必要があることを意味します。私はJavaで良いライブラリを探していて、数式パーサーのようなexp4j、expr、jep、jevalを見つけましたが、サーバーがその文字列を提供するだけなので、これらの「インデックス」を取得するオプションがどこにあるのかわかりません。 DBで参照する必要のある「インデックス項目」を教えてはいけません。助けてください :(
追加:1、3、4、2、7、および10は変数です。これらの変数名は、DB内のインデックスであるため、取得する必要があります(必ずしも数値ではありません)。名前を取得したら、SQLクエリを作成して、その変数の実際の値を取得します。
こんな感じです...
ParseMath function = new ParseMath("[(sin(1+3*4)+2)/7]+10");
String[] variables = function.getVariables();
System.out.println(values) = 1, 3, 4, 2, 7, 10
以降...
String[] realValues = SqlQuery(variables);
for(int i=0; i<variables.lenght(); i++){
function.setValue(variable[i],realValue[i]);
}
double result = function.exec();
PS:私が書いた関数とメソッドは存在しません、私はそれを私の問題の文脈のように置きます...