4

以下のような関数を作成する方法はありますか?

三角形の面積を計算する必要がありますが、これを計算するための正しい式を覚えていません。また、インターネットやその他の情報源もありません。私が覚えているのは、そのような関数の引数は、サイドbと高さhであるということです。したがって、次のような関数を作成したいと思います。

public static void calculate(String forgottenFunc, int... params) {/*implementation*/};

RegExp を使わずに、JavaScript の eval 関数を Java から実装することを考えました。文字列 (forgottenFunc) を、指定されたパラメーターを使用して必要なものを計算する実際の関数に変換することに行き詰まりました。または、Python の評価またはその他の機能の代替手段。ありがとう

4

4 に答える 4

1

無料の Java 数学パーサーであるJepを試してください。

于 2012-04-22T21:49:04.317 に答える
0

一般的な解決策として、プログラムにMVELを埋め込み、数式を文字列として渡し、パラメーターをバインドして評価することができます。リンクされたページから:

MVEL は、Java ベースのアプリケーション向けの強力な式言語です。多数の機能を提供し、最小のプロパティのバインディングと抽出から本格的なスクリプトまで、あらゆるものに適しています。

于 2012-04-23T00:11:55.790 に答える
0

あなたのコメントに基づいて、クロージャーではなくパーサーが必要であることがわかりました。

JavaScript の eval 関数に相当する組み込み関数はありません。それは悪と見なされます。

zovegames が提案するようなサードパーティのパーサーを使用するか、 javaccのようなものを使用して独自のパーサーを構築できます。

于 2012-04-22T22:43:21.347 に答える