21xrx.com
2025-03-24 01:32:27 Monday
文章检索 我的文章 写文章
我的Java字符串表达式计算实践
2023-06-11 06:25:19 深夜i     8     0
Java 字符串表达式 计算

我最近在学习Java,学到了计算字符串表达式的方法,因为有些场景下需要通过字符串计算得出结果。下面我就来简单分享一下Java计算字符串表达式的方法,欢迎大家参考。

首先,我们需要使用Java的Stack来实现后缀表达式的计算。将中缀表达式转化为后缀表达式,再通过栈进行计算。

下面给出代码实例:

import java.util.Stack;
public class Calculator {
  public static void main(String[] args) {
    Calculator calculator = new Calculator();
    String expression = "7+5*7-3";
    double result = calculator.calculate(expression);
    System.out.println("结果是:" + result);
  }
  public double calculate(String expression) {
    // 定义中缀表达式栈和后缀表达式栈
    Stack
  infixStack = new Stack<>();
 
    Stack
  suffixStack = new Stack<>();
 
    // 将中缀表达式转换为后缀表达式
    String[] items = expression.split("");
    for (String item : items) {
      if (item.matches("\\d+")) {
        // 数字直接加入后缀表达式栈
        suffixStack.push(item);
      } else if (item.matches("[\\+\\-\\*\\/]")) {
        // 如果是运算符,则加入中缀表达式栈
        infixStack.push(item);
      }
    }
    while (!infixStack.isEmpty()) {
      suffixStack.push(infixStack.pop());
    }
    // 计算后缀表达式结果
    Stack
  resultStack = new Stack<>();
 
    while (!suffixStack.isEmpty()) {
      String item = suffixStack.pop();
      if (item.matches("\\d+")) {
        resultStack.push(Double.parseDouble(item));
      } else {
        double num2 = resultStack.pop();
        double num1 = resultStack.pop();
        switch (item) {
          case "+":
            resultStack.push(num1 + num2);
            break;
          case "-":
            resultStack.push(num1 - num2);
            break;
          case "*":
            resultStack.push(num1 * num2);
            break;
          case "/":
            resultStack.push(num1 / num2);
            break;
        }
      }
    }
    return resultStack.pop();
  }
}

以上就是我的Java计算字符串表达式的实践经验分享,如果有更好的方法或代码实现,欢迎大家补充。

  
  

评论区