2017-12-19 14 views
0

私は、変数を使って数式を作成し、後で使用できるアプリケーションをユーザーに提供するアプリケーションに取り組んでいます。ユーザーが作成できる数式の数式を保存する

例:

A*B+ (C/D*E) 

を式を作成した後は、ユーザーが計算にそれを使用することができますので、私はそれを解析する必要があり、私たちの例では(別の変数を取得します: "A、B、C、D、E")、これらの変数の値を入力するフォームを作成します。

私の数式はどうやって保存しますか?

変数を取得するために手動で解析する文字列を考え、Maths.evalを使用して数式を計算しました。 それ以外の場合は、後で変数の復旧を容易にするために、JSONに自分の数式を保存することができます。

正しい方法は何と思いますか?私は謝罪、私の質問はスペルミスすることができる知っている:

はあなたに

NBをありがとうございます。

+0

いずれかの方法で特定の問題がありますか? –

+0

いいえ、私はちょうどそれが簡単に維持することができるよりクリーンな方法がないかと思っていた。 – obiyadi

答えて

3

このような公式を表現、解析、評価する通常の方法は、Binary expression treeです。さらに、ツリートラバーサルは、このような問題を解決するための自然なアプローチであり、異なるトラバーサルタイプ(inorder、preorder、...)を使用することができます。

編集:評価はimplemented via stackとすることができます。

+0

私は同意する、それは正常に行われるべきことである。しかし私の場合、数式は比較的単純で、計算にはScriptEngine JavaScriptを使用します: ScriptEngine engine = mgr.getEngineByName( "JavaScript"); 私は数式の永続性について疑問を抱きました。最後に、後で解析するStringに格納するつもりです。 – obiyadi

+1

評価者への入力がStringの場合、Stringとして保存しない理由は何もありません:) ScriptEngineの経験はありませんが、JavaScriptで評価する場合は、単純に数式を文字列としてそのまま(変数を使って)格納し、 'var A = 10;などの変数代入を前置します。 var B = 20; eval( "A + B"); '。 –

関連する問題