我想用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'类或类似的类)。然后你会生成表达式对象,这将能够评估自己。你的问题实在太广泛了:至少,完整的答案会有几页长。 –