计算器Java添加数字

时间:2016-03-25 10:06:04

标签: java

所以,我的问题是,如何让这个让我的计算器应用程序能够像这样输入100 * 2/2 + 5并让它返回它的总和? 或者甚至以某种方式使它使用()括号..?

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter number: ");
        String input = scanner.nextLine();

        System.out.println("Enter number 2: ");
        String input2 = scanner.nextLine();

        System.out.println("Enter operator ");
        String op = scanner.nextLine();

        int intEnter1 = Integer.parseInt(input.toString());
        int intEnter2 = Integer.parseInt(input2.toString());

        if (op.contains("+")) {
            System.out.println(intEnter1 + intEnter2);
        }

        if (op.contains("-")) {
            System.out.println(intEnter1 - intEnter2);
        }

        if (op.contains("*")) {
            System.out.println(intEnter1 * intEnter2);
        }

        if (op.contains("/")) {
            double intEnter1Double = (double) intEnter1;
            double intEnter2Double = (double) intEnter2;
            System.out.println(intEnter1Double / intEnter2Double);
        }
    }
}

3 个答案:

答案 0 :(得分:4)

还有一个非常好的库,用于评估名为exp4j的数学表达式。

您可以这样做:

Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
    .variables("x", "y")
    .build()
    .setVariable("x", 2.3)
    .setVariable("y", 3.14);
double result = e.evaluate();

答案 1 :(得分:2)

我找到了一个用于评估表达式的库。你可以试试这个。

http://javaluator.sourceforge.net/en/home/

Double value = new DoubleEvaluator().evaluate(expression);

但是这个库可以让你全部工作,也许你想自己做算法没有?

答案 2 :(得分:2)

您必须将表达式转换为Reverse Polish notation。 我们的想法是将复杂表达式转换为可以使用以下算法计算结果的形式:

  1. 表达式从左到右解析
  2. 数字被推送到堆叠
  3. 如果发生操作员,则弹出相应的数字量         来自堆栈(1表示一元运算符,2表示二进制)并且对它们执行操作
  4. 例如,给定输入:

    5 + ((1 + 2) × 4) − 3
    

    符号如下:

    5 1 2 + 4 × + 3 −