java输入一串算式返回计算结果
时间: 2023-05-29 15:08:01 浏览: 321
以下是一个示例代码,可以输入一串算式并返回计算结果:
```
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入算式:");
String expression = scanner.nextLine();
int result = calculate(expression);
System.out.println("计算结果为:" + result);
}
public static int calculate(String expression) {
// 去掉空格
expression = expression.replaceAll(" ", "");
// 定义两个栈,一个存储数字,一个存储运算符
Stack<Integer> numStack = new Stack<>();
Stack<Character> opStack = new Stack<>();
// 遍历表达式
for (int i = 0; i < expression.length(); i++) {
char c = expression.charAt(i);
if (Character.isDigit(c)) {
// 如果是数字,将其压入数字栈
int num = c - '0';
while (i + 1 < expression.length() && Character.isDigit(expression.charAt(i + 1))) {
num = num * 10 + expression.charAt(i + 1) - '0';
i++;
}
numStack.push(num);
} else if (c == '(') {
// 如果是左括号,将其压入运算符栈
opStack.push(c);
} else if (c == ')' || c == '+' || c == '-' || c == '*' || c == '/') {
// 如果是右括号或运算符
while (!opStack.isEmpty() && opStack.peek() != '(' && priority(opStack.peek()) >= priority(c)) {
// 如果运算符栈顶的运算符优先级不低于当前运算符,则弹出运算符和两个数字进行运算
int num2 = numStack.pop();
int num1 = numStack.pop();
char op = opStack.pop();
int result = operate(num1, num2, op);
numStack.push(result);
}
if (c == ')') {
// 如果是右括号,弹出左括号
opStack.pop();
} else {
// 如果是运算符,将其压入运算符栈
opStack.push(c);
}
}
}
// 将剩余的运算符和数字依次弹出进行运算
while (!opStack.isEmpty()) {
int num2 = numStack.pop();
int num1 = numStack.pop();
char op = opStack.pop();
int result = operate(num1, num2, op);
numStack.push(result);
}
return numStack.pop();
}
// 定义运算符优先级
public static int priority(char op) {
switch (op) {
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
default:
return 0;
}
}
// 定义运算方法
public static int operate(int num1, int num2, char op) {
switch (op) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
default:
return 0;
}
}
}
```
使用示例:
```
请输入算式:(1+2)*3+4*(5-6)
计算结果为:-2
```
阅读全文