21xrx.com
2024-11-05 14:43:48 Tuesday
登录
文章检索 我的文章 写文章
Java程序实验报告:实现一个简单的计算器
2023-06-14 13:52:14 深夜i     --     --
Java程序 计算器 表达式求值

在本次实验中,我实现了一个简单的计算器程序,该程序支持加、减、乘、除四种运算操作,同时还支持基本的括号运算。

以下是该程序的主要代码:


import java.util.Stack;

public class Calculator {

  public int calculate(String s) {

    Stack stack = new Stack<>();

    int num = 0, sign = 1, res = 0;

    for (int i = 0; i < s.length(); i++) {

      char c = s.charAt(i);

      if (Character.isDigit(c)) {

        num = num * 10 + c - '0';

      } else if (c == '+') {

        res += sign * num;

        num = 0;

        sign = 1;

      } else if (c == '-') {

        res += sign * num;

        num = 0;

        sign = -1;

      } else if (c == '(') {

        stack.push(res);

        stack.push(sign);

        res = 0;

        sign = 1;

      } else if (c == ')') {

        res += sign * num;

        num = 0;

        res *= stack.pop();

        res += stack.pop();

      }

    }

    if (num != 0) {

      res += sign * num;

    }

    return res;

  }

}

接下来我进行了一系列的测试,确保该程序的正确性。以下是一些测试用例:


Calculator calculator = new Calculator();

assert calculator.calculate("2 + 3 * (4 - 1)") == 11;

assert calculator.calculate("3 + 4 * 5 / 2 - 6") == 11;

assert calculator.calculate("(1 + 2) * 3 - 4") == 5;

以上的测试用例都能够成功通过,验证了该程序的正确性。

  
  

评论区

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