目的
根据书的算法,自己理解以后自己默写出算法
java代码
package book1_3;
import edu.princeton.cs.algs4.Stack;
/**
* @description: $Dijkstra的双栈算术表达式求值算法
* 双栈就是数字栈和操作符号栈
* @create: 2019-02-16
**/
public class Evaluate {
/*expression表达式的规则是:
1.每个计算都有双括号
2.数字和加减乘除以及括号之间存在空格
* */
public static double cal(String expression){
String[] stringArray = expression.split(" ");
Stack<String> fuhao=new Stack<String>();//1操作符号栈
Stack<Double> number=new Stack<Double>();//2数字栈
for (String s:stringArray) {
//表达式从左往右.逐个读取
//第一种情况,遇到左括号,则什么都不做
if(s.equals("(")){
}else if (s.equals("+")){//第二种情况,遇到加减乘除,则放到1操作符号栈里面
fuhao.push("+");
}else if (s.equals("-")){//第二种情况,遇到加减乘除,则放到1操作符号栈里面
fuhao.push("-");
}else if (s.equals("*")){//第二种情况,遇到加减乘除,则放到1操作符号栈里面