import java.util.Stack;
public class Dijkstra {//最短路径算法
public static void main(String[] args) {
Stack<Integer> stacknum=new Stack<Integer>();
Stack<Character> stacksin=new Stack<Character>();
String a= "((1+(2+3))*2)";
char []std=a.toCharArray();
for(int i=0;i<std.length;i++){
if(std[i]=='(') ;
else if(std[i]=='+')
stacksin.push(std[i]);
else if(std[i]=='*')
stacksin.push(std[i]);
else if(std[i]==')'){//右括号开始计算的标志
char c=stacksin.pop();
int number=stacknum.pop();
if(c=='+'){
number=number+stacknum.pop();
}else if(c=='*'){
number =number*stacknum.pop();
}
stacknum.push(number);
}else{
stacknum.push(Integer.parseInt(Character.toString(std[i])));//将可分析的字符串转化为整数
}
}
System.out.println(stacknum.pop());
}
}
Dijkstra
于 2018-08-04 16:46:04 首次发布