存储和使用算术运算符

时间:2017-04-13 12:23:10

标签: java math javafx operators

我想用JavaFx编写以下应用程序:

该程序生成用户必须解决的数学任务。使用复选框,您可以决定将发生哪些运算符(+ - * /)。如果选中所有4个选项,则每个操作符应使用一次。所以输出将是这样的:

4 + 3-2 * 1/2

我的问题是我不知道如何存储选定的运算符以及如何将它们作为工作运算符而不是作为字符串或字符串插入程序中,因为最后程序必须比较用户使用计算机计算出的解决方案解决方案。

感谢您的帮助和建议我真的希望有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

您可以使用String或Chars存储运算符,然后只使用switch语句来定义哪个运算符,甚至If Else

有一个这样的项目,但它是使用C#开发的,只是为了直觉。

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

答案 1 :(得分:0)

你要做的就是有一些if语句,你必须生成一些数字。 程序遍历它并检查运算符,如果有多个运算符,则检查运算顺序(除数乘,然后减去和加法)。然后程序检查输入。

答案 2 :(得分:0)

定义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()验证使用情况。