2017-04-13 4 views
2

JavaFxで次のアプリケーションをプログラミングします。算術演算子の保存と使用

このプログラムでは、ユーザーが解決しなければならない数学的タスクが生成されます。チェックボックスを使用すると、どの演算子(+ - * /)が発生するかを決めることができます。 4つのオプションすべてがチェックされている場合は、すべてのオペレータを一度使用する必要があります。私の問題は、私は私が選択した演算子を格納することができますか見当がつかないとどのように私は中に後でそれらを挿入することができるということです

4 + 3-2 * 1月2日

:だから、出力は次のようなものになります最終的にユーザーの解をコンピューターから計算された解と比較しなければならないので、プログラムは作業演算子であり、charまたはストリングとしてではありません。

ありがとうあなたの助けと提案私は本当に誰かがこれで私を助けることを願っています。

+1

式を表現(および評価)するために、ある種のオブジェクトモデルを作成する必要があります。これには、特定のサブクラス(または 'evaluate(double、double)'メソッドなどの 'Operator' enum)を持つ抽象クラス' Operator'が含まれている可能性があります。次に、それ自身を評価できる式オブジェクトを生成します。あなたは本当に広すぎます。完全な答えは、少なくともいくつかのページになります。 –

答えて

0

はあなたがArithmeticOperator.values()を調べることによって、使用して確認することができます例えば

public enum ArithmeticOperator implements BiFunction<Double, Double, Double> { 
    PLUS("+", (a, b) -> a + b), 
    MINUS("-", (a, b) -> a - b), 
    MULTIPLY("*", (a, b) -> a * b), 
    DIVIDE("/", (a, b) -> a/b); 

    private final String symbol; 
    private final BiFunction<Double, Double, Double> operation; 

    ArithmeticOperator(String symbol, BiFunction<Double, Double, Double> operation) { 
     this.symbol = symbol; 
     this.operation = operation; 
    } 

    public Double apply (Double a, Double b) { 
     return operation.apply(a, b); 
    } 

    public String toString() { 
     return symbol; 
    } 
} 

enumを定義します。

+0

あなたの答えをありがとう。あなたの書いたコードを少し説明できますか?以前はenumやBiFunctionで作業したことがないので、理解していません。 – wenzel267

+0

BiFunctionインターフェイスはJava 8で導入されました.2つの引数をとり、何かを返す1つのメソッドがあります。 ' - >'に関する奇妙な見た目の構文は(Java 8)ラムダです。列挙型は永遠に存在し、正確なインスタンス数を持つクラスです。 Googleはこれらの用語を使用します。それはコメントでカバーするにはあまりにも多くのです。 – Bohemian

0

StringまたはCharsを使用して演算子を格納し、switch文を使用して演算子を定義したり、If Elseを定義したりすることもできます。

このようなプロジェクトがありますが、それはC#を使用して開発されました。

https://www.codeproject.com/Articles/88435/Simple-Guide-to-Mathematical-Expression-Parsing

+0

これは、式がアプリケーションによって生成されているように聞こえるので、解析する必要はありません。 –

0

あなたがしなければならない場合は、いくつかの文を持っている、あなたは、いくつかの数字を生成する必要があります。 プログラムはそれを繰り返し処理し、演算子をチェックします。複数の演算子がある場合は、演算の順序をチェックします(乗算を除算し、加算します)。次に、プログラムは入力をチェックインします。

関連する問題