博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单四则运算表达式的java实现(1)
阅读量:4879 次
发布时间:2019-06-11

本文共 2559 字,大约阅读时间需要 8 分钟。

思路:

  1  将表达式转换成后缀表达式

  2 利用栈计算后缀表达式

/**       * 计算数值       * @param text       * @return       */      public static int count(String text)      {          Queue
queue=changeToPostOrder(text); Stack
stack=new Stack<>(); int result=0; while(!queue.isEmpty()) { String t=queue.poll(); if(t.length()>1)//数字 { stack.push(Integer.parseInt(t)); } else if(t.length()==1) { if(isYunsuanfu(t)) { char c=t.charAt(0); int ri=stack.pop(); int li=stack.pop(); switch (c) { case '+': result=li+ri; stack.push(result); break; case '-': result=li-ri; stack.push(result); break; case '*': result=li*ri; stack.push(result); break; case '/': result=li/ri; stack.push(result); break; default: break; } } else { stack.push(Integer.parseInt(t)); } } } return stack.empty()?0:stack.pop(); } //change to post order /** * 遇到数字直接输出,遇到符号,假如是高于栈顶优先级如乘除就直接压栈, * 假如是低于或等于栈顶优先级或者是右括号直接输出栈顶直到左括号,再压栈 * @param text * @return */ public static Queue
changeToPostOrder(String text) { Queue
queue=new LinkedList<>(); Stack
stack=new Stack<>(); StringBuilder temp=new StringBuilder(); int len=text.length(); for(int i=0;i
='0' && c<='9'; } public static boolean isYunsuanfu(String s) { return s.equals("*") || s.equals("/") || s.equals("+") || s.equals("-"); } public static boolean isHigher(char c,char cmp) { return priority(c)>priority(cmp); } public static int priority(char c) { int p=0; switch (c) { case '*': p=2; break; case '/': p=2; break; case '+': p=1; break; case '-': p=1; break; default: break; } return p; }

 

 

程序很罗嗦,有空再写一遍!

转载于:https://www.cnblogs.com/maydow/p/4760981.html

你可能感兴趣的文章
codility: CountTriangles
查看>>
赛斯说
查看>>
python 中的pipe
查看>>
(SQL Analyzer services)定义链接维度
查看>>
squid
查看>>
系统开发管理、架构与设计步步谈随笔索引
查看>>
Java的时间空间复杂度详解
查看>>
有效防止SQL注入漏洞
查看>>
Linux chown命令
查看>>
十、I/O流——4-输入、输出流体系
查看>>
十二、网络编程——4-基于UDP协议的网络编程
查看>>
异常处理与调试6 - 零基础入门学习Delphi55(完)
查看>>
if语句三种形式
查看>>
正则表达式之字符串验证
查看>>
codeblocks如何支持_tmain?可移植代码的编码推荐
查看>>
省市联动 填坑
查看>>
canvas写的一个小时钟demo
查看>>
原来今天是冬至
查看>>
又混了一天班
查看>>
九度oj 1006
查看>>