PTA练习题:表达式求值_1 2023-03-14 13:53 9阅读 0赞 在一个表达式中,只有“(”,“)”,“0-9”,“+”,“-”,“\*”,“/”,“^”,请求出表达式的值。(“/”用整数除法)。 输入格式: 共1 行,为一个算式。 (算式长度<=30 其中所有数据在 0~2^31-1的范围内)。 输出格式: 共一行,为表达式的值。 输入样例: 在这里给出一组输入。例如: 1+(3+2)*(7^2+6*9)/(2) 输出样例: 在这里给出相应的输出。例如: 258 import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String a = in.next(); char[] e = a.toCharArray(); Stack<Character> s1 = new Stack<>(); Stack<Integer> s2 = new Stack<>(); int x1; int x2; for(int i=0;i<e.length;i++) { if(e[i] >= '0' && e[i] <= '9') { int num; num = e[i]-'0'; while(i<e.length-1) { if(!(e[i+1] >= '0' && e[i+1] <= '9')) { break; } num *= 10; num += (e[i+1] - '0'); i++; } s2.push(num); } else if(s1.isEmpty()) { s1.push(e[i]); } else if(e[i] == '(') { s1.push(e[i]); } else if(e[i] == ')') { char c3; while(!s1.isEmpty() && (c3 = s1.pop()) != '(') { x2 = s2.pop(); x1 = s2.pop(); s2.push(calculate(x1,x2,c3)); } } else if(e[i] == '^') { if(s1.peek() == '^') { char c3; c3 = s1.pop(); x2 = s2.pop(); x1 = s2.pop(); s2.push(calculate(x1,x2,c3)); } s1.push(e[i]); } else if(e[i] == '+' || e[i] == '-') { if(s1.peek() != '(') { char c3; while(!s1.isEmpty() && s1.peek() != '(') { c3 = s1.pop(); x2 = s2.pop(); x1 = s2.pop(); s2.push(calculate(x1,x2,c3)); } } s1.push(e[i]); } else { char c3; while(!(s1.peek() == '+' || s1.peek() == '-') && !s1.isEmpty() && s1.peek() != '(') { c3 = s1.pop(); x2 = s2.pop(); x1 = s2.pop(); s2.push(calculate(x1,x2,c3)); } s1.push(e[i]); } } while(!s1.isEmpty()) { char c3; c3 = s1.pop(); x2 = s2.pop(); x1 = s2.pop(); s2.push(calculate(x1,x2,c3)); } System.out.println(s2.pop()); in.close(); } public static int calculate(int x1,int x2,char c) { int sum = 0; switch (c) { case '+':sum = x1+x2;break; case '-':sum = x1-x2;break; case '*':sum = x1*x2;break; case '/':sum = x1/x2;break; case '^':sum = (int) Math.pow(x1,x2);break; } return sum; } } 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 栈--表达式求值 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pbmlv 爱被打了一巴掌/ 2021年10月25日 21:38/ 0 赞/ 134 阅读
相关 5.表达式求值(1) 5.表达式求值(1) <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td ╰半橙微兮°/ 2022年04月06日 12:58/ 0 赞/ 66 阅读
相关 表达式求值 今天把表达式求值给搞定吧。 问题:给你个表达式,有加减乘除和小括号,让算出结果。 我们假定计算式是正确的,并且不会出现除数为0等错误。 py大法好啊,在保证可读性的前提下 ╰半夏微凉°/ 2022年05月06日 14:28/ 0 赞/ 78 阅读
相关 算法 表达式求值 重中之重,这个博客还是有bug的,请转看逆波兰表达式(自认为当时写的还不错) 表达式求值中用到了两个栈,一个栈存放的是操作数,另一个栈存放的是操作符(运算符号和\),\可以让 叁歲伎倆/ 2022年05月27日 18:26/ 0 赞/ 56 阅读
相关 数学表达式求值 <table style="width:1615px; margin-bottom:20px; background-color:transparent"> <tbody> 骑猪看日落/ 2022年06月02日 16:00/ 0 赞/ 89 阅读
相关 表达式求值 <table style="width:1615px; margin-bottom:20px; background-color:transparent"> <tbody> 深藏阁楼爱情的钟/ 2022年06月02日 16:00/ 0 赞/ 42 阅读
相关 PTA练习题.高考状元 include<iostream> include<string> using namespace std; class stude 骑猪看日落/ 2022年06月13日 11:53/ 0 赞/ 31 阅读
相关 表达式求值 \define TRUE 1 \define FALSE 0 \define STACK\_INIT\_SIZE 10002 \include "iostream" Myth丶恋晨/ 2022年08月25日 13:28/ 0 赞/ 38 阅读
相关 NYOJ--表达式求值 表达式求值 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 4 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+ 谁践踏了优雅/ 2022年08月26日 23:12/ 0 赞/ 41 阅读
相关 PTA练习题:表达式求值_1 在一个表达式中,只有“(”,“)”,“0-9”,“+”,“-”,“\”,“/”,“^”,请求出表达式的值。(“/”用整数除法)。 输入格式: 共1 行,为一个算式。 (算式 朱雀/ 2023年03月14日 13:53/ 0 赞/ 10 阅读
还没有评论,来说两句吧...