21xrx.com
2024-12-22 23:10:53 Sunday
登录
文章检索 我的文章 写文章
Java计算器实现加减乘除优先输入顺序
2023-06-16 13:07:51 深夜i     --     --
Java计算器 加减乘除 优先级计算 输入顺序 正则表达式 链表

Java是一种广泛使用的编程语言,常常用于开发各种应用程序和工具。在这里,我们将展示如何使用Java编写一个简单的计算器,实现加减乘除四则运算,并按照优先级计算表达式。同时,输入的顺序也将得到正确的处理。

首先,我们需要定义一个计算器类,并添加四个方法分别实现加减乘除运算。这些方法将接收两个数字作为参数,并返回计算结果。在运算过程中,我们使用switch语句来判断运算符,并根据不同情况执行相应的计算操作。

接下来,我们需要定义一个方法来实现优先级计算。这个方法将接收一个包含四则运算表达式的字符串作为参数,并返回计算结果。为了正确处理顺序,我们需要使用正则表达式将字符串分割成运算符和数字,并将其存储在链表中。然后,我们可以按照运算符的优先级依次执行计算。具体实现可以参考下面的代码。

public static double calculate(String expression) {

  LinkedList list = new LinkedList ();

  Pattern pattern = Pattern.compile("(\\d+\\.?\\d*)|([\\+\\-\\*\\/\\(\\)])");

  Matcher matcher = pattern.matcher(expression);

  while (matcher.find()) {

    list.add(matcher.group());

  }

  // 优先计算乘除

  for (int i = 0; i < list.size(); i++) {

    if (list.get(i).equals("*") || list.get(i).equals("/")) {

      double a = Double.parseDouble(list.get(i - 1));

      double b = Double.parseDouble(list.get(i + 1));

      double result = 0;

      if (list.get(i).equals("*")) {

        result = multiply(a, b);

      } else {

        result = divide(a, b);

      }

      list.set(i, String.valueOf(result));

      list.remove(i + 1);

      list.remove(i - 1);

      i--;

    }

  }

  // 再计算加减

  for (int i = 0; i < list.size(); i++) {

    if (list.get(i).equals("+") || list.get(i).equals("-")) {

      double a = Double.parseDouble(list.get(i - 1));

      double b = Double.parseDouble(list.get(i + 1));

      double result = 0;

      if (list.get(i).equals("+")) {

        result = add(a, b);

      } else {

        result = subtract(a, b);

      }

      list.set(i, String.valueOf(result));

      list.remove(i + 1);

      list.remove(i - 1);

      i--;

    }

  }

  return Double.parseDouble(list.get(0));

}

最后,我们在主函数中可以实现输入的处理和输出结果。对于用户的输入,我们需要使用Scanner类来获取。程序将接收一个含有四则运算的字符串作为输入,然后调用上述的calculate方法来进行计算,最后将结果输出。

public static void main(String[] args) {

  Scanner sc = new Scanner(System.in);

  System.out.println("请输入要计算的表达式:");

  String expression = sc.nextLine();

  double result = calculate(expression);

  System.out.println("计算结果为:" + result);

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复