我想用JavaFx對以下應用程序進行編程:存儲和使用算術運算符
該程序生成用戶必須解決的數學任務。用複選框可以決定哪些運算符(+ - * /)將會出現。如果全部4個選項都被選中,每個操作員都應該使用一次。所以輸出將是這樣的:
4 + 3-2 * 1/
我的問題是,我不知道我怎麼能存儲選擇的運營商,以及如何我可以在以後將它們插入該程序作爲工作操作員而不是字符或字符串,因爲最後程序必須將用戶解決方案與計算機計算出的解決方案進行比較。
謝謝你的幫助和建議我真的希望有人能幫助我。
我想用JavaFx對以下應用程序進行編程:存儲和使用算術運算符
該程序生成用戶必須解決的數學任務。用複選框可以決定哪些運算符(+ - * /)將會出現。如果全部4個選項都被選中,每個操作員都應該使用一次。所以輸出將是這樣的:
4 + 3-2 * 1/
我的問題是,我不知道我怎麼能存儲選擇的運營商,以及如何我可以在以後將它們插入該程序作爲工作操作員而不是字符或字符串,因爲最後程序必須將用戶解決方案與計算機計算出的解決方案進行比較。
謝謝你的幫助和建議我真的希望有人能幫助我。
定義一個enum
,如
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;
}
}
您可以使用驗證通過檢查ArithmeticOperator.values()
。
您可以使用字符串或字符存儲操作符,然後只需使用switch語句來定義哪個操作符,甚至是If Else
。
有一個這樣的項目,但它使用C#開發,只是爲了想出主意。
https://www.codeproject.com/Articles/88435/Simple-Guide-to-Mathematical-Expression-Parsing
聽起來好像應用程序正在生成表達式,所以不需要解析它。 –
所有你需要做的就是有一些if語句,你必須產生一些數字。 程序遍歷它並檢查運算符,如果有多個運算符,則檢查運算順序(除以乘,然後減和相加)。然後程序檢查輸入。
您需要創建某種對象模型來表示(並評估)表達式;這可能包括一個帶有特定子類的抽象'Operator'類(或者可能是一個帶'evaluate(double,double)'方法的'Operator'類或類似的類)。然後你會生成表達式對象,這將能夠評估自己。你的問題實在太廣泛了:至少,完整的答案會有幾頁長。 –