首页 文章

用变量Java代替数学运算符

提问于
浏览
-2

目前正试图为我的一个Uni家庭作业做一个反向抛光计算器 .

当使用一堆if / else语句来计算输入哪个运算符并且通常像num1 num2那样进行数学运算时,程序运行正常 .

这超出了我们设置的作业任务,但我现在要做的是用变量替换运算符,例如:“ num1 + num2 " would become " num1 variable num2 " where variable equals " + ”等 .

有没有办法在Java中这样做?

提前致谢

2 回答

  • 0

    首先,您可以在String而不是if-then-else链上使用开关 . 另一种方法是从String到Function构建静态最终Map(例如HashMap) . 字符串是运算符 . 功能执行操作 . 在Java 8中,您可以将函数指定为lambda . 我现在只能通过手机访问,因此无法显示代码 . 如果您添加显示您的意思的代码,您的问题会更好 .

  • 1

    由于您有兴趣超越培训材料的范围,并且假设您已经了解了接口,我相信您正在寻找的是binary expression tree(该维基百科文章实际上解释了它很好) .

    基本上,您使用 double compute() 方法创建一个接口 Expression . 将有两种类型的实现类:

    • 操作数: ConstantVariable .

    • 运算符: PlusMinusMultiplyDivide . 每个都有两个 Expression 字段: leftright .

    然后将您的文本表达式解析为表达式树:

    // input: "num1 + num2 * 3"
    // result expression tree will be built by parser using:
    Expression a = new Variable("num1");
    Expression b = new Variable("num2");
    Expression c = new Constant(3);
    Expression d = new Multiply(b, c);
    Expression e = new Plus(a, d);
    
    Map<String, Double> variables = /*defined elsewhere*/;
    double result = e.compute(variables);
    

    如果您选择接受它,您的新作业将编写表达式类和解析器以从文本表达式构建表达式树 .

    希望这会鼓励你超越训练材料,在比赛中享受一些乐趣 .

相关问题