题目描述
给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过100,合法的字符包括”+, -, *, /, (, )”,”0-9”,字符串内容的合法性及表达式语法的合法性由做题者检查。本题目只涉及整型计算。
输入描述:
输入算术表达式
输出描述:
计算出结果值
关键解题思路:
1 读取一行输入String s,依次读取。若s[i]不是数字则将s的subString(index,i)截取转为整型操作数存放stk_int栈中。
2 判断当前s[i]存放的操作符与当前stk_str栈中的栈顶元素优先级大小。
3 若优先级比栈顶元素高,则入栈;否则,返回两个操作数与栈顶操作符运算后的结果并压入操作数栈。
4 遇到括号时需单独考虑,若遇到左括号,则入栈同时压入一个#;若遇到右括号,则进行两个操作数与栈顶操作符运算,直到遇到左括号。
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
//定义运算符及对应优先级
class OP{
char c;
int num;
public OP(char c,int num){
this.c = c;
this.num = num;
}
};
public class Main{
//判断运算符优先级,c1 > c2则返回true
public static boolean judge(char c1,char c2){
OP op[] = new OP[7];
char cf[] = {'#','&#