Dijkstra的双栈算术表达式求值算法

来源:互联网 发布:淘宝客鹊桥怎么开通 编辑:程序博客网 时间:2024/05/21 10:26
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());}}

原创粉丝点击