docs: private Object calculate(String expression) {
      	Stack<String> postfixStack = new Stack<String>();
          Stack<Object> resultStack = new Stack<Object>();
          prepare(expression,postfixStack);
          Collections.reverse(postfixStack);// 将后缀式栈反转
          while (!postfixStack.isEmpty()) {
              String currentValue = postfixStack.pop();
              if (currentValue.equals("") || !isOperator(currentValue.charAt(0))) {// 如果不是运算符则存入操作数栈中
              	if(currentValue.startsWith("\"")){
              		currentValue=currentValue.substring(1,currentValue.length()-1);
              	}
                  currentValue = currentValue.replace("~", "-");
                  resultStack.push(currentValue);
              } else {// 如果是运算符则从操作数栈中取两个值和该数值一起参与运算
                  String secondValue = resultStack.pop().toString();
                  String firstValue = resultStack.pop().toString();
  
                  // 将负数标记符改为负号
                  firstValue = firstValue.replace("~", "-");
                  secondValue = secondValue.replace("~", "-");
  
                  Object tempResult = calculate(firstValue, secondValue, currentValue.charAt(0));
                  resultStack.push(tempResult);
              }
          }
          return resultStack.pop();
      }