public class Calculator extends Object
数学表达式计算工具类
| 限定符和类型 | 字段和说明 |
|---|---|
private int[] |
operatPriority
运用运算符ASCII码-40做索引的运算符优先级
|
private Stack<Character> |
opStack
运算符栈
|
private Stack<String> |
postfixStack
后缀式栈
|
| 构造器和说明 |
|---|
Calculator() |
| 限定符和类型 | 方法和说明 |
|---|---|
double |
calculate(String expression)
按照给定的表达式计算
|
private BigDecimal |
calculate(String firstValue,
String secondValue,
char currentOp)
按照给定的算术运算符做计算
|
boolean |
compare(char cur,
char peek)
利用ASCII码-40做下标去算术符号优先级
|
static double |
conversion(String expression)
计算表达式的值
|
private boolean |
isOperator(char c)
判断是否为算术符号
|
private void |
prepare(String expression)
数据准备阶段将表达式转换成为后缀式栈
|
private static String |
transform(String expression)
将表达式中负数的符号更改
|
public static double conversion(String expression)
expression - 表达式private static String transform(String expression)
expression - 例如-2+-1*(-3E-2)-(-1) 被转为 ~2+~1*(~3E~2)-(~1)public double calculate(String expression)
expression - 要计算的表达式例如:5+12*(3+5)/7private void prepare(String expression)
expression - 表达式private boolean isOperator(char c)
c - 字符public boolean compare(char cur,
char peek)
cur - 下标peek - peekprivate BigDecimal calculate(String firstValue, String secondValue, char currentOp)
firstValue - 第一个值secondValue - 第二个值currentOp - 算数符,只支持'+'、'-'、'*'、'/'Copyright © 2020. All rights reserved.