当前位置: 首页 > news >正文

微信网站制作免费/百度安装app

微信网站制作免费,百度安装app,wordpress服务器配置,网页版微信二维码怎么扫/*** 1.先转换为逆波兰顺序* 数字直接存入list,符号压入栈中,但是如果栈底元素不大于该运算符的运算顺序,则将栈底pop,直到大于栈底运算符为止,再压入栈中,* 最后将运算符依次全部pop(以上pop出的运算符存入list)* 2.根据逆序算出结果* 从头到尾依次读取list的数据,将数字压入栈…

/**

* 1.先转换为逆波兰顺序

* 数字直接存入list,符号压入栈中,但是如果栈底元素不大于该运算符的运算顺序,则将栈底pop,直到大于栈底运算符为止,再压入栈中,

* 最后将运算符依次全部pop(以上pop出的运算符存入list)

* 2.根据逆序算出结果

* 从头到尾依次读取list的数据,将数字压入栈中,出现运算符后pop出两个数字进行运算,运算式为"后pop数 运算符 先pop数"

* 运算完毕将结果再次压入栈中.结束后,将数字栈中的唯一一个数字pop出并将其返回.

*

*

* 学习之处:

* 1.String对象的比较不要用==,>,<.>

* 2.使用HashMap()的定义可以给对象进行编号或加权.

* 3.需要时要给读取的信息加上结尾标志,如读入String结尾的"#".

* 4.取String的单个字母:String temps=String.valueOf(expression.charAt(i));

* 5.检测数字:temps.matches("[0-9.]")

**/

1 public classCalculator {2 privateString string;3 private MyStack opratorStack = newMyStack();4 private MyStack numberStack = newMyStack();5 private ArrayList rpnList = newArrayList();6 private Map priorityMap=new HashMap();//用于存储操作符优先级的Map7 //初始化优先级约定(可根据计算的复杂程度扩展)

8

9 publicCalculator(String str)10 {11 priorityMap.put("+",0);12 priorityMap.put("-",0);13 priorityMap.put("*", 1);14 priorityMap.put("/", 1);15 priorityMap.put("(", 2);16 string = str+"#";17 }18 private int getPriority(String op)//得到一个操作符的优先级

19 {20 returnpriorityMap.get(op);21 }22

23 private voidtoRpn() {24

25 String temp = "";26 for (int i = 0; i < string.length(); i++) {27 String ch =String.valueOf(string.charAt(i));28 if (ch.matches("[0-9.]"))29 temp +=ch;30

31 else { //如果操作数完整,现将其存入list中再进行后续操作

32

33 if(!temp.equals("")) {//防止加入进空格

34 rpnList.add(temp);35 temp = "";36 }37

38 if (ch.equals("#")) { //读取结束时将运算符栈依次pop并添加到rpnList中

39 while (!opratorStack.isEmpty()) {40 rpnList.add(opratorStack.pop());41 }42 } else if (ch.equals(")")) { //遇到右括号将左括号后的运算符全部pop

43 String op =opratorStack.pop();44 while (!op .equals("(")) {45 rpnList.add(op);46 op =opratorStack.pop();47 }48 } else{49 if (!opratorStack.isEmpty()) { //如果为普通的运算符

50 String endOprator =opratorStack.endValue();51

52 while (!endOprator.equals( "(") && (getPriority(ch)

55 if (!opratorStack.isEmpty()) {56 endOprator =opratorStack.endValue();57 }else

58 break;59

60 }61

62 opratorStack.push(ch);63 }64 else

65 opratorStack.push(ch);66 }67 }68 }69 }70

71 public doublecalculate(String string){72 this.string = string+"#";73 returncalculate();74 }75

76 public doublecalculate(){77 toRpn();//逆波兰序列转换78

79 //扫描String对象

80 for(int i = 0; i < rpnList.size(); i++){81 String temp =rpnList.get(i);82 //匹配第一个字符,为数字的则将String对象转为Double并存入numberStack中

83 if(String.valueOf(temp.charAt(0)).matches("[0-9]")){84 numberStack.push(Double.valueOf(temp));85 } //匹配到运算符,调出最后两个numberStack中数字进行运算,并将得数压入栈中(栈次底数 操作符 栈最底数)

86 else{87 //Double n = opration(numberStack.pop(), numberStack.pop(), temp);

88 Double n =numberStack.pop();89 numberStack.push(opration(numberStack.pop(), n , temp));90 }91 }92

93 rpnList = new ArrayList();//为下次运算做准备

94 returnnumberStack.pop();95 }96

97 privateDouble opration(Double val1,Double val2,String oprator){98 if(oprator.equals("+"))99 val1 +=val2;100 else if(oprator.equals("-"))101 val1 -=val2;102 else if(oprator.equals("*"))103 val1 *=val2;104 else

105 val1 /=val2;106 returnval1;107 }108

109 public static voidmain(String[] args) {110 String string1 = "12+2*37-(4*5+6)*7";111 Calculator calculator = newCalculator(string1);112

113 System.out.println(calculator.calculate());114 System.out.println(calculator.calculate("4.99+5.99+6.99*1.06"));115 }116 }

运算结果:

-96.0

18.389400000000002

Process finished with exit code 0

http://www.jmfq.cn/news/5189743.html

相关文章:

  • 学网站建设的学校/找公司做网站多少钱
  • 日本人做的网站本子/每日一则小新闻
  • 如何直到网站是用什么模板做的/重庆seo点击工具
  • 百度免费网站制作/计算机培训课程
  • 本机网站建设/网站开发流程的8个步骤
  • 怎么看网站是什么时候做的/学计算机哪个培训机构好
  • 网站注销备案查询系统/新闻热点最新事件
  • 做网站怎样产生效益/搜索引擎推广步骤
  • 公众号开发网站建设合同/网站优化推广服务
  • 网站建设 图纸网/凡科建站登录
  • 技术培训网站/网站优化公司大家好
  • 江西住房和城乡建设信息网站/百度商业平台
  • 怎样做ppt下载网站/桂平seo快速优化软件
  • 做网站 工商 非法经营/沈阳疫情最新消息
  • 安陆市网站/竞价推广托管服务
  • 响应式网站开发原理/微信公众号营销
  • 免费网站建设 百度一下/百度官网电话
  • 网站建设j介绍ppt/智能建站
  • 有经验的做网站/企业获客方式
  • 环保网站建设公司/百度seo点击工具
  • 网站设计制作服务好态度好/seo网站关键词优化软件
  • 帮做ppt网站/百度开户渠道商哪里找
  • 开发app需要哪些审批/关键词搜索引擎优化推广
  • 做谷歌网站吗/宁波seo关键词优化
  • 哈尔滨做网站巨耀公司/推广普通话宣传语
  • c语言网站建设/app拉新佣金排行榜
  • 学校为什么要建设网站/网站建设规划要点详解
  • 河北省网站建设/怎么找网站
  • 怎么获取网站数据做统计数据/市场营销策划方案书
  • 删除hao123主页/seo网站诊断顾问