在使用豆包解决这题:简单四则运算(里面包含了具体的要求)
问题描述
实现一个基本的计算器来计算一个简单的字符串表达式的值。注意事项如下:
-
输入是一个字符串表达式(可以假设所给定的表达式都是有效的)
-
字符串表达式可以包含的运算符号为:左括号
(, 右括号), 加号+, 减号- -
可以包含的数字为:非负整数(< 10)
-
字符串中不包含空格
-
处理除法 case 的时候,可以直接省略小数部分结果,只保留整数部分参与后续运算
-
请不要使用内置的库函数
eval
输入格式
如:3+4*5/(3+2)
数据约束
见题目描述
输出格式
计算之后的数字
输入样例:
1+13+4*5/(3+2)4+2*5-2/1(1+(4+5+2)-3)+(6+8)
输出样例:
271223
我在拿到题目之后只需要把题目放到豆包的AI助手中,他就会自动帮我生成完整代码,非常好用
以下是帮我生成的代码,运行后完美解决该问题
`import java.util.Stack;
public class Main { public static int solution(String expression) { Stack numStack = new Stack<>(); Stack opStack = new Stack<>();
for (int i = 0; i < expression.length(); i++) {
char c = expression.charAt(i);
if (Character.isDigit(c)) {
int num = c - '0';
numStack.push(num);
} else if (c == '(') {
opStack.push(c);
} else if (c == ')') {
while (opStack.peek()!= '(') {
int num2 = numStack.pop();
int num1 = numStack.pop();
char op = opStack.pop();
int result = performOperation(num1, num2, op);
numStack.push(result);
}
opStack.pop();
} else if (c == '+' || c == '-' || c == '*' || c == '/') {
while (!opStack.isEmpty() && precedence(c) <= precedence(opStack.peek())) {
int num2 = numStack.pop();
int num1 = numStack.pop();
char op = opStack.pop();
int result = performOperation(num1, num2, op);
numStack.push(result);
}
opStack.push(c);
}
}
while (!opStack.isEmpty()) {
int num2 = numStack.pop();
int num1 = numStack.pop();
char op = opStack.pop();
int result = performOperation(num1, num2, op);
numStack.push(result);
}
return numStack.pop();
}
public static int precedence(char op) {
if (op == '+' || op == '-') {
return 1;
} else if (op == '*' || op == '/') {
return 2;
}
return 0;
}
public static int performOperation(int num1, int num2, char op) {
switch (op) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
}
return 0;
}
public static void main(String[] args) {
// You can add more test cases here
System.out.println(solution("1+1") == 2);
System.out.println(solution("3+4*5/(3+2)") == 7);
System.out.println(solution("4+2*5-2/1") == 12);
System.out.println(solution("(1+(4+5+2)-3)+(6+8)") == 23);
}
}`
现在豆包还可以再idea中使用只需要安装插件
安装后
右侧就会出现这个AI,不用离开编译器就可以问问题,解决了很多开发时间,提供了便利,一直在用.