中缀表达式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:10+5,与前缀表达式(例:* 5 10),或后缀表达式(例:5 10 -)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。
与前缀或后缀记法不同的是,中缀记法中括号是必需的。
我们以" (10+20/2*3)/2+8 "这个中缀表达式为例来实现中缀计算器:
public class InfixCalculator {
public static void main(String[] args) {
String express = "(10+20/2*3)/2+8";
int result = evaluateExpression(express);
System.out.println(result);
}
//计算中缀表达式
private static int evaluateExpression(String express) {
express = insertBlanks(express); //按指定格式格式化字符串
String[] tokens = express.split(" "); //将字符串以“ ”进行分割
ArrayStack<Character> operatorStack = new ArrayStack<Character>(); //创建只存放运算符的栈