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程序设计》结对编程_第二周:四则运算相关推荐

  1. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  2. 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路

    声明:本文由"阿里云MVP团队"原创,转载经"阿里云开发者社区"授权.原文标题:<职业电竞选手的Java大神路:对话阿里云MVP周志明>. 销售超过 ...

  3. java applet编程_第二十讲 Java Applet程序设计

    第二十讲Java Applet程序设计 主要内容 初识Java Applet Java Applet的生命周期 Graphics类和图像图形绘制 Applet中播放声音媒体 初识Java Applet ...

  4. 《深入理解Java虚拟机》-周志明(转)

    (转载):如果文章有错误,欢迎评论或私信指出,谢谢~ https://blog.csdn.net/Yano_nankai/article/details/50957578 本文固定链接:https:/ ...

  5. 周志明:职业电竞选手的Java大神路

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 作为豆瓣9.0评分的作者,周志明算得上是一位Java大神,而他却对此不以为意,坦白Java ...

  6. 不会玩游戏的程序员不是好作家,《深入理解Java虚拟机》周志明来了!

    嘉宾:周志明.杨福川 采访.撰文:Satoh_AI 这次采访起源来自于我和豆瓣的一位读者有同样的好奇心,为什么网上搜不到周志明老师的更多信息?为什么"80后玩家"可以把本本书都维持 ...

  7. 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”

    点击蓝字  关注我们 作者丨李雨晨 来源丨AI科评论 2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕.CCF-GAIR 2020 峰会由中国计算机学会(C ...

  8. 周志华:“数据、算法、算力”人工智能三要素,在未来还要加上“知识”

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源:AI科技评论 作者:李雨晨 2020 年 8 月 7 日,全球人工智能和机器人峰会(CC ...

  9. 周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”| CCF-GAIR 2020...

    来源:雷锋网 作者 | 李雨晨 如何将"机器学习"与"逻辑推理"相结合,是人工智能领域的"圣杯问题" " 编者按:2020 年 8 ...

最新文章

  1. 2018谷歌学术指数发布——看看综合、生物、生信、微生物领域高引文章和杂志
  2. 外贸网络推广浅析怎么能更有效地提升网站的收录?
  3. 初步学习Linux文件基本属性和Cygwin STATUS_ACCESS_VIOLATION 错误
  4. 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理
  5. Java 面试题(4)—— 多线程
  6. 云主机开放端口笔记-mysql远程连接需要的步骤
  7. Spring中AOP注解实现
  8. android交互xml代码,Unity 与Android的交互(Android studio)
  9. python源码中的学习笔记_第8章_函数
  10. Windows azure中公用云服务的两个虚机FTP的设置
  11. sketchup 计算机配置,草图大师2020对电脑配置要求
  12. 淘宝褚霸谈做技术的心态
  13. CF128A - Statues
  14. zabbix监控nginx状态页面
  15. 移动数据统计平台分析
  16. 麒麟鲲鹏升腾鸿蒙巴龙,华为四大芯片 麒麟、巴龙、昇腾和鲲鹏“四大天王”...
  17. 【WEB】前端系统配色方案(全览)
  18. 解决无法完美卸载office2010的问题
  19. Android仿微博/QQ空间滑动自动播放视频功能
  20. LINUX -SELL编程

热门文章

  1. bboss quartz定时任务使用案例介绍
  2. Landmark Guidance Independent Spatio-channel Attention and Complementary ContextInformationbased FER
  3. Scala基础知识(个人总结)
  4. 小米怎么和计算机连接网络设置密码,小米电视与电脑共享要用户名和密码怎么办...
  5. PPT卡片排版技巧,快来收藏
  6. itext合成pdf报异常 PDF header signature not found
  7. python爬取百度图片,自定义关键字和页数
  8. Vue中key属性的作用
  9. 机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)
  10. 2022年智能家居生态系统状态报告