为了账号安全,请及时绑定邮箱和手机立即绑定

转变为逆波兰表示式的代码报错:堆栈溢出,怎么解决?

转变为逆波兰表示式的代码报错:堆栈溢出,怎么解决?

weixin_慕瓜1573895 2020-02-22 11:10:24
import java.util.Stack;import javax.swing.text.ChangedCharSetException;public class T { public static void main(String[] args){ System.out.print("请输入算式:"); Scanner sc=new Scanner(System.in); String formula=sc.nextLine(); System.out.print(change(formula)); }public static Stack<String> change(String expression) { Stack<Character> s1=new Stack<>();s1.push('#'); Stack<String> s2=new Stack<>(); char[] chars=expression.toCharArray(); StringBuffer s=new StringBuffer(); for(int i=0;i<chars.length;i++) { if(Character.isDigit(chars[i])) { while(Character.isDigit(chars[i])||chars[i]=='.') { s.append(chars[i]); }s2.push(s.toString()); } else { switch(chars[i]){ case'(':s1.push(chars[i]);break; case')':while(!s1.peek().equals('(')){ s2.push(s1.pop().toString()); }    s1.pop();break; case'+': case'-': case'/': case'*':; s1.push(chars[i]); if(get(chars[i+1])>get(chars[i])) { s1.push(chars[i+1]); }else { s2.push(s1.peek().toString()); } } } }return s2; } public static int get(char c) {    int m=0; switch(c) { case'+': case'-':m=1;break; case'/': case'*':m=2;break; case'(': case')':m=0;break; case'#':m=-1;break;} return m; } }
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 1343 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号