在spring中定义一个类(如MyObject),我需要处理四则混合运算的表达
时间: 2024-09-19 11:06:28 浏览: 28
Spring中数据访问对象Data Access Object的介绍
在Spring框架中,如果你想要定义一个类来进行四则混合运算的表达处理,你可以创建一个专门的计算类,比如`ArithmeticCalculator`。这里是一个简单的例子:
```java
import java.util.Stack;
public class ArithmeticCalculator {
public double calculate(String expression) {
Stack<Double> values = new Stack<>();
Stack<Character> ops = new Stack<>();
for (int i = 0; i < expression.length(); i++) {
char c = expression.charAt(i);
if (Character.isDigit(c)) {
double value = Double.parseDouble(new String(c));
while (!ops.isEmpty() && hasPrecedence(values.peek(), value, ops.peek())) {
double temp = performOperation(values.pop(), ops.pop(), values.pop());
values.push(temp);
}
values.push(value);
} else if (c == '(') {
ops.push(c);
} else if (c == ')') {
while (ops.peek() != '(') {
double temp = performOperation(values.pop(), ops.pop(), values.pop());
values.push(temp);
}
ops.pop();
} else if (isOperator(c)) {
while (!ops.empty() && hasPrecedence(c, ops.peek())) {
double temp = performOperation(values.pop(), ops.pop(), values.pop());
values.push(temp);
}
ops.push(c);
}
}
while (!ops.isEmpty()) {
double temp = performOperation(values.pop(), ops.pop(), values.pop());
values.push(temp);
}
return values.pop();
}
private boolean isOperator(char op) {
return op == '+' || op == '-' || op == '*' || op == '/';
}
private double performOperation(double b, char op, double a) {
switch (op) {
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
return a / b;
default:
throw new IllegalArgumentException("Invalid operator");
}
}
private boolean hasPrecedence(double val1, double val2, char op) {
return (op == '*' || op == '/') && val2 > 0;
}
}
```
这个类包含了解析表达式、操作数栈和运算符栈的基本功能。`calculate`方法接受一个字符串表达式,然后逐字符分析并执行相应的运算。
阅读全文