题: 实现输入算术表达式 如(1+((2+3)*(4*5))),输出计算后的结果
解题关键:
1. 一个栈存操作数,一个栈存运算符;
2. 根据输入情况判断,遇到“)”就弹出操作符,进行运算,直到遇到“(”;
3. 如果运算符栈已经存了“*”,“/”,“sqrt”,再存入“+”,“-”时,应该先将乘除开方运算完成,后加减运算;
(此题输入的整个算术要用括号括起来)
实现:
import java.util.Scanner;
import java.util.Stack;
public class Evaluate {
public static void main(String[] args){
Stack<String> ops = new Stack<String>();
Stack<Double> vals = new Stack<Double>();
Scanner scanner = new Scanner(System.in);
String input = "";
while(scanner.hasNextLine()){
input = scanner.nextLine(); // 输入按照空格隔开
System.out.println(String.format("===%s===",input));
if( null =