您的位置:首页 > 其它

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());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: