Dijkstra的双栈算术表达式求值算法
2017-11-12 22:59
225 查看
import java.util.Scanner; import java.util.Stack; public class Evaluate { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String evaluate = scanner.nextLine(); char a[] = evaluate.toCharArray();//将字符串转化为字符数组 Stack<String> opsStack= new Stack<String>(); Stack<Double> valStack = new Stack<Double>(); int i = 0; while(i<a.length){ String string = String.valueOf(a[i]); if(string.equals("(")); else if(string.equals("+")) opsStack.push(string); else if(string.equals("-")) opsStack.push(string); else if(string.equals("*")) opsStack.push(string); else if(string.equals("/")) opsStack.push(string); else if(string.equals(")")){ String oString = opsStack.pop(); double v = valStack.pop(); if(oString.equals("+")) v = v+valStack.pop(); if(oString.equals("-")) v = v-valStack.pop(); if(oString.equals("*")) v = v*valStack.pop(); if(oString.equals("/")) v = v/valStack.pop(); valStack.push(v); } else { valStack.push(Double.parseDouble(string)); } i++; } System.out.println(valStack.pop()); } }
相关文章推荐
- Dijkstra的双栈算术表达式求值算法
- Dijkstra的双栈算术表达式求值算法
- 算法手记(2)Dijkstra双栈算术表达式求值算法
- Dijkstra双栈算术表达式求值算法
- 《Algorithms》(4th Edition)学习笔记——Dijkstra的双栈算术表达式求值算法
- Dijkstra的双栈算术表达式求值算法
- Dijkstra双栈算术表达式求值算法
- POJ 3268 Silver Cow Party dijkstra();
- poj 3268 Dijkstra+矩阵逆转让多源变单源
- POJ 1797 Heavy Transportation【Dijkstra最短路变形】
- hdu2112 HDU Today(dijkstra求单源最短路)
- Gym 100851F Froggy Ford(dijkstra)
- POJ 3635 Full Tank? 拆点建图+dijkstra
- poj 2253 Frogger(dijkstra变形,好题)
- hdu 2680 Choose the best route(spfa/dijkstra)
- uva 11374(Dijkstra + 枚举)
- Sightseeing_poj3463_dijkstra
- 图之 最短路径 Dijkstra迪杰斯特拉算法
- HDU 5889 Barricade (Dijkstra+Dinic)
- Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)