Java结对编程四则运算

一.题目描述:如何对表达式进行求值运算呢

1、中缀表达式与后缀表达式(娄老师讲解)

中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运算数后面的表达式,比如1 2 +。为什么要讲后缀表达式呢?因为电脑运算后缀表达式会比中缀表达式方便很多。那么如何运算后缀表达式呢?

举个例子:计算9+(3-1)*3+6/2,转换为后缀表达式即为9 3 1 - 3 * + 6 2 / +(怎么转换后面再讲)。计算规则就是建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。

2、中缀表达式转换为后缀表达式

法则:

如果遇到数字,我们就直接将其输出。

如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。

如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。

如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。

如果我们读到了输入的末尾,则将栈中所有元素依次弹出。

二.需求分析。

要随机产生规定数量的式子。

要对分式进行计算。

要支持多语言。

要自动判断对错。

三.设计思路

确定要选用的语言;

要产生随机数;

在产生随机数的时候就要产生随机的运算符;

在产生数字与运算符时最后一个数字之后就不能再产生运算符(运算符的数量始终比数字少1);

在一个式子中要多次产生随机数与运算符因此要用到循环;

在循环结束时就产生了一个式子就要求进行计算与输入;

在产生中缀的式子后要将其转化为后缀;

在输入完之后就要判断对错,统计正确率;

四.代码编译

public String calculate(ArrayList postOrder)throws IOException {

Stack stack = new Stack();

//ArrayList stack = postOrder;

String res = "";

FileWriter fm = new FileWriter("answer.txt");

BufferedWriter bufm = new BufferedWriter(fm);

for (int i = 0; i < postOrder.size(); i++) { if (res.equals("")) {

if (Character.isDigit(postOrder.get(i).charAt(0))) {

stack.push(Integer.parseInt(postOrder.get(i)));

} else {

Integer back = (Integer) stack.pop();

Integer front = (Integer) stack.pop();

stack.push(back);

Calculator calculator2 = new Calculator();

switch (postOrder.get(i).charAt(0)) {

case '+':

res = calculator2.compute(front + "/1", "+", back + "/1");

//res = (front + back);

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

case '-':

res = calculator2.compute(front + "/1", "-", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();> break;

case '*':

res = calculator2.compute(front + "/1", "*", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

case '/':

res = calculator2.compute(front + "/1", "/", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

}

} }

else {

if (Character.isDigit(postOrder.get(i).charAt(0))) {

stack.push(Integer.parseInt(postOrder.get(i)));

} else {

Integer back = (Integer) stack.pop();

Calculator calculator2 = new Calculator();

switch (postOrder.get(i).charAt(0)) {

case '+':

res = calculator2.compute(res, "+", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

case '-':

res = calculator2.compute(res, "-", back + "/1");

bufm.write(res);> bufm.flush();

bufm.newLine();

break;

case '*':> res = calculator2.compute(res, "*", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

case '/':

res = calculator2.compute(res, "/", back + "/1");

bufm.write(res);

bufm.flush();

bufm.newLine();

break;

}

}

}

}

return res;

}

20175305张天钰Java结对编程四则运算(二)

Java结对编程四则运算(二) 一.题目描述及要求 Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Me ...

Java结对编程四则运算一周小结

Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...

20175226 2018-2019-2《java程序设计》结对编程-四则运算(第一周-阶段总结)

结对编程-四则运算(第一周-阶段总结) 需求分析 实现一个四则运算程序,要求: 自动随机生成小学四则运算题目(加,减,乘,除) 支持整数.真分数且支持多项式 能够利用栈的思想,将中缀转换为后缀表达式 ...

结对编程--四则运算(Java)萧英杰 夏浚杰

结对编程--四则运算(Java)萧英杰 夏浚杰 Github项目地址 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目 ...

结对编程--四则运算(Java)梅进鹏 欧思良

结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...

王译潇20162314 实验报告三plus结对编程四则运算第一阶段

北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...

Java结对编程之挑战出题

Java结对编程之挑战出题 需求分析 需求 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉. 设计思路 具体的思路: 思路一: 原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就 ...

结对编程-四则运算生成器&lpar;java实现&rpar;

结对伙伴:陈振华  项目要求 1.题目:实现一个自动生成小学四则运算题目的命令行程序. 2.需求: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真 ...

结对编程 四则运算(java)(胡大华 黄绪明)

Github项目地址 https://github.com/yogurt1998/Myapp 项目需求 题目: 实现一个自动生成小学四则运算题目的命令行程序 功能 1.使用-n 参数控制生成题目的个数 ...

随机推荐

单核 -512M内存-2000并发正常使用

自从自己创业以后就很少写博客了,也许是太忙了.也许是无法静下心好好研究一个东西.今天把我们做的后台做了下压力测试.结果还可以,尤其是对于我这种从java转过来土人. 4年前看到一篇抨击java的文章 ...

Json-转换

js转换 引用json.js(将json格式转换成字符串 var name = document.getElementById("name").value; var retries ...

c&plus;&plus; string 拼接 int错误

程序中用到字符串和int合成字符串,受java习惯的影响,直接进行了字符串与int的+操作,结果不正确.查了一下才明白问题所在,记录一下string str=”abc”+1;输出为:bc,因为”abc ...

SKTextureAtlas类

继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用 ...

Javascript 文件的同步加载与异步加载

HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值.defer: boolean, 可选.延迟脚本执行,相当于将script标签放入页面b ...

使用自定义脚本扩展程序自动执行 VM 自定义任务

 在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...

Linux配置防火墙端口 8080端口

1.查看防火墙状态,哪些端口开放了 /etc/init.d/iptables status 2.配置防火墙 vi /etc/sysconfig/iptables   ################# ...

通过Obfuscated ssh避免时不时ssh连接不畅的问题【转】

众所周知的原因,为了能流畅的使用google.使用某些“不存在”的网站,我们一般都是需要通过某些不方便光明正大说明使用用途的技术.比如通过ssh tunnel,这是最简单的,也是用得最多的. 不过,这 ...

四&comma;ESP8266 TCP服务器&lpar;基于Lua脚本语言&rpar;

我要赶时间赶紧写完所有的内容....朋友的东西答应的还没做完呢!!!!!!!没想到又来了新的事情,,....... 配置模块作为TCP服务器然后呢咱们连接服务器发指令控制LED亮灭 控制的指令呢咱就配 ...

JavaScript中逗号运算符

JavaScript中逗号运算符(,)是顺序执行两个表达式.使用方法: expression1, expression2 其中expression1是任何表达式. expression2是任何表达式. ...

张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算相关推荐

  1. 张天钰 内大计算机学院,计算机学院学风建设情况通报

    原标题:计算机学院学风建设情况通报 计算机学院2018-2019学年第二学期集中晚自习落实情况 为了培养学生自主学习能力,养成良好的学习习惯,加强学风建设.北京理工大学珠海学院计算机学院于2018-2 ...

  2. 内大计算机学院研究生奖学金,通知 | 【研究生评奖评优】关于做好浙江大学2017-2018学年计算机学院研究生学年小结及评奖评优工作的通知...

    原标题:通知 | [研究生评奖评优]关于做好浙江大学2017-2018学年计算机学院研究生学年小结及评奖评优工作的通知 各位计算机学院研究生: 现将浙江大学2017-2018学年研究生学年小结及评奖评 ...

  3. 内大计算机学院研究生奖学金,计算机学院2020级硕士研究生学业奖学金评审结果公示...

    2020年12月18日,计算机学院2020级研究生学业奖学金评审会在2#402会议室召开,根据研工部下发的<关于开展 2020-2021 学年第一学期研究生学业奖学金评审的通知>和< ...

  4. 内大计算机学院,内蒙古大学:计算机学院

    计算机学院是全区高等学校中最早建立的专门培养计算机专业技术中高级人才的教学与科研单位.学院由计算机科学系.软件工程系.信息工程管理系.计算(实验)中心等教学单位组成,设有计算机网络与信息安全.人工智能 ...

  5. 安大计算机学院的张燕平导师怎么样,安大两名硕士论文被曝高度抄袭两人同届同门同属于一个导师...

    原标题:安大两名硕士论文被曝高度抄袭 将启动硕博论文自查自纠 日前,安徽大学2007届硕士研究生刘某某.魏某的2篇学位论文被翻出,这两篇成文于2007年的硕士论文,被曝与2篇成文于2006年,由曲阜师 ...

  6. 矿大计算机学院辅导员,与你一起乘风破浪!矿大2020级辅导员天团来了!

    原标题:与你一起乘风破浪!矿大2020级辅导员天团来了! 辅学生成长 导学生成才 "员"学生梦想 他们 与青春作伴 为青春摆渡 亲爱的new cumters 2020级辅导员已全员 ...

  7. 西工大计算机学院报名前联系导师的说明

    9月~10月将迎来最终的报名季,在这之前要确定好自己的报考院校和专业,报名分为预报名和正式报名,从网上找到了2019年的一张流程图,每年这些基本流程都是一样的,大家可以作为参考: 网报流程 现场确认一 ...

  8. 西工大计算机学院2018夏令营,2019年西北工业大学计算机学院全国优秀大学生暑期夏令营开营...

    2019年计算机学院全国优秀大学生暑期夏令营报名踊跃,经过角逐,最终64位同学获得了参营资格,6月25日,计算机学院在古城西安迎来了全国各地的优秀学生. 6月26日早上9:00,计算机学院在友谊校区研 ...

  9. 川大计算机学院的牛人走的都是同一条道路

    今天听到liulike师兄也去了MSRA,当然,以他的实力,的确应该去MSRA才对.liulike师兄大我一届,是川大ACM队的牛人,今年代表川大ACM队在全国取得了历史最好成绩. 又是一个去MSRA ...

最新文章

  1. 教你如何不显示excel中#N/A
  2. newlisp debugger
  3. 组件的生命周期钩子函数
  4. 子集和问题 算法_LeetCode 90 | 经典递归问题,求出所有不重复的子集II
  5. OpenCV图像处理(14)—— 图像转视频
  6. 合并报表编制采用的理论_跟我一起学合并报表之——长期股权投资的抵消处理...
  7. 张开涛 shiro 博客地址
  8. CS231n Assiganment#1解析(一)——KNN
  9. #PLC_梯形图简史(内含早期梯形图编程珍贵画面)
  10. Unity3d将资源打包成AssetBundle 读取后材质球丢失的问题
  11. 如何搭建一个自己的微信公众号
  12. 威廉玛丽学院计算机专业好吗,威廉玛丽学院计算机硕士语言要求请问在哪
  13. 雨落江满泛涟漪 尘拂心海滤情音 相思入云寄清风
  14. 基于51单片机的电子记分牌的设计
  15. 快速排序与冒泡排序的效率对比
  16. 【源码】elfun18:计算各种椭圆积分和函数
  17. 计算机放音乐声音小在吗调,笔记本外放声音太小怎么办?-电脑教程
  18. 去掉router-link文字的下划线
  19. 抖音seo企业号开发在线客服关键系统上线.技术源代码mvc架构搭建
  20. 软件测试周刊(第13期):质量是一种认知

热门文章

  1. 1250名微软员工自曝工资待遇,以求薪酬公平
  2. erp服务器安装虚拟打印机,如何在云服务器上使用打印机
  3. 【前端框架】Vue2-Vue3
  4. php画奥运五环颜色,canvas绘制奥运五环代码分享
  5. SKlearn学习笔记——XGBoost
  6. 十大布局智慧城市生态的跨国巨头
  7. 深入理解C++11电子书pdf下载
  8. 【pen200-lab】10.11.1.121
  9. sele.request -102 参数timestamp异常,请检查后重试
  10. 仓储搬运机器人_仓储自动搬运机器人