java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
一、码云链接
1、Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示;
2、测试代码并未上传;
3、主类位于Main.java中;
4、若有修改,仍会更新;
二、需求分析
之前在20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算里面已经对需求分析作出了总体的阐述,在此不作赘述。上一周,我们小组已经实现了在一个命令行程序中:
计算小学四则运算题目(加、减、乘、除);
支持整数、多运算符、真分数运算;
所以我们本周的主要任务(要实现的需求)是:
自动生成小学四则运算题目(加、减、乘、除);
统计学生的正确率;
三、设计思路
之前在20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算里面已经指出了“如何计算带整数、多运算符、真分数的小学四则运算题目”的设计思路,在这里我主要分析关于如何实现本次需求的设计思路。
1、如何自动生成小学四则运算题目:Teacher类的设计
要随机生成一个四则运算题目,其总体思路大致分两种:
设计随机生成一个中缀表达式,作为四则运算的题目;
设计随机生成一个后缀表达式,再将其转化为中缀表达式,作为四则运算的题目;
比较这两种思路,我认为后者更加有利于括号的生成:当我们随机生成了一个后缀表达式,只需要逆向的求出计算顺序,即在正确的位置生成括号,从而生成相应的中缀表达式。
关于后者,我听说孙勖哲同学在网上找到了类似的代码,我之后会问他要链接,补充在这里。(我选择用前者实现的原因,主要是......怎么生成后缀表达式我没想到什么好算法,在网上也没找到。)
关于前者,如何随机生成一个中缀表达式,我的主要设计思路是:
随机生成n个加减乘除运算符;
在运算符之间以及表达式的开头结尾随机插入数字,形成一个没有括号的中缀表达式;
允许在至少包含两个数字和一个运算符的情况下产生括号;
识别并且去掉没有意义的括号;
我们小组以上述思路为指导,设计了Teacher类:
CreStr(int n)方法随机生成一个String类包含n个加减乘除运算符;
InpNum()方法在运算符之间以及表达式的开头结尾随机插入数字,形成一个没有括号的中缀表达式;
InPar()方法随机产生括号;
DelPar()方法识别并且去掉没有意义的括号;
CreQue(int n)方法顺序执行上述方法,产生题目;
2、如何统计学生的正确率:Student类的设计
Student类的主要功能应该是包括:
输入答案;
核对答案是否正确;
统计正确率;
综上所述,Student类的设计思路如下:
Answer(StringBuffer que)输入答案并且核对答案是否正确;
getPro()统计正确率;
四、UML类图
五、功能截图
六、结对感受
这一周的结对编程比起上一周更难的地方在于思路的设计,对于怎么产生一个中缀表达式,我们讨论了很久,一再地改进算法。虽然最后的算法不是最理想的设计(不是先产生后缀表达式),但是我们很开心,因为程序完全是我们自己设计的,也是我们自己一点点写的。最后统计一下,不加上测试代码,大约有600余行,有一点点成就感吧。
七、结对编程的照片
附:遇到的问题及部分解决方法
1、随机数的产生范围
rand.nextInt(n)里面的参数n是产生一个0 <= nextInt(n) < n的随机数,即0~n-1,参考链接rand.nextint()
需要注意rand是Random产生的对象,Random要用import java.util.Random;引入。
java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算相关推荐
- 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路
声明:本文由"阿里云MVP团队"原创,转载经"阿里云开发者社区"授权.原文标题:<职业电竞选手的Java大神路:对话阿里云MVP周志明>. 销售超过 ...
- java applet编程_第二十讲 Java Applet程序设计
第二十讲Java Applet程序设计 主要内容 初识Java Applet Java Applet的生命周期 Graphics类和图像图形绘制 Applet中播放声音媒体 初识Java Applet ...
- 《深入理解Java虚拟机》-周志明(转)
(转载):如果文章有错误,欢迎评论或私信指出,谢谢~ https://blog.csdn.net/Yano_nankai/article/details/50957578 本文固定链接:https:/ ...
- 周志明:职业电竞选手的Java大神路
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 作为豆瓣9.0评分的作者,周志明算得上是一位Java大神,而他却对此不以为意,坦白Java ...
- 不会玩游戏的程序员不是好作家,《深入理解Java虚拟机》周志明来了!
嘉宾:周志明.杨福川 采访.撰文:Satoh_AI 这次采访起源来自于我和豆瓣的一位读者有同样的好奇心,为什么网上搜不到周志明老师的更多信息?为什么"80后玩家"可以把本本书都维持 ...
- 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
点击蓝字 关注我们 作者丨李雨晨 来源丨AI科评论 2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕.CCF-GAIR 2020 峰会由中国计算机学会(C ...
- 周志华:“数据、算法、算力”人工智能三要素,在未来还要加上“知识”
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源:AI科技评论 作者:李雨晨 2020 年 8 月 7 日,全球人工智能和机器人峰会(CC ...
- 周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”| CCF-GAIR 2020...
来源:雷锋网 作者 | 李雨晨 如何将"机器学习"与"逻辑推理"相结合,是人工智能领域的"圣杯问题" " 编者按:2020 年 8 ...
最新文章
- 2018谷歌学术指数发布——看看综合、生物、生信、微生物领域高引文章和杂志
- 外贸网络推广浅析怎么能更有效地提升网站的收录?
- 初步学习Linux文件基本属性和Cygwin STATUS_ACCESS_VIOLATION 错误
- 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理
- Java 面试题(4)—— 多线程
- 云主机开放端口笔记-mysql远程连接需要的步骤
- Spring中AOP注解实现
- android交互xml代码,Unity 与Android的交互(Android studio)
- python源码中的学习笔记_第8章_函数
- Windows azure中公用云服务的两个虚机FTP的设置
- sketchup 计算机配置,草图大师2020对电脑配置要求
- 淘宝褚霸谈做技术的心态
- CF128A - Statues
- zabbix监控nginx状态页面
- 移动数据统计平台分析
- 麒麟鲲鹏升腾鸿蒙巴龙,华为四大芯片 麒麟、巴龙、昇腾和鲲鹏“四大天王”...
- 【WEB】前端系统配色方案(全览)
- 解决无法完美卸载office2010的问题
- Android仿微博/QQ空间滑动自动播放视频功能
- LINUX -SELL编程
热门文章
- bboss quartz定时任务使用案例介绍
- Landmark Guidance Independent Spatio-channel Attention and Complementary ContextInformationbased FER
- Scala基础知识(个人总结)
- 小米怎么和计算机连接网络设置密码,小米电视与电脑共享要用户名和密码怎么办...
- PPT卡片排版技巧,快来收藏
- itext合成pdf报异常 PDF header signature not found
- python爬取百度图片,自定义关键字和页数
- Vue中key属性的作用
- 机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)
- 2022年智能家居生态系统状态报告