2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算
组队成员: 仇夏
学号: 20172310
博客地址:
@王志伟 四则运算第一周博客 @仇夏四则运算第一周博客
@王志伟 四则运算第二周博客 @仇夏四则运算第二周博客
结对照片:
1.进度进程:
1.上周进度:
- 已完成:
- 完成了生成中缀表达式的类。
- 完成了main函数用来运行的类。
- 中缀表达式转化成后缀表达式的类
- 后缀表达式的计算。
- 去重。
- 代码的完善与美化。 - 待完成:
- 将生成的题目存到一个文件中。
- UML类图的完善。
2.这周进度:
- 已完成:
- 完成了生成中缀表达式的类。
- 完成了main函数用来运行的类。
- 中缀表达式转化成后缀表达式的类
- 后缀表达式的计算。
- 去重。
- 代码的完善与美化。
- 将生成的题目存到一个文件中。
- UML类图的完善。
2.项目介绍:
- 这个程序要求用户输入所要生成问题的个数n(每个算式的等级都是随机的且最高级为5级),之后每出来一个问题就要求用户输入他计算的得到的答案。程序将自动计算出正确答案,并与用户答案相比较,最后所有问题计算完后,电脑自动显示所有正确答案与用户答案,并给出正确率。

- 创建一个文件,并将生成的题目存入文件,并从文件中读题并计算:

3.项目中遇到的问题:
由于前面两周遇到的问题已经在前两篇博客中指出,因此在本篇博客中不再赘述。这里只说出这周解决的问题:
问题一:
在进行比较符号优先级的时候,出现了一些问题。例如在考虑一个符号是否应该进栈时,应该与栈顶元素进行比较,比他高就进栈,低就栈顶元素出栈,直到遇到比他高的元素或者栈中没有元素。举个例子:
3+5×2-1=
第一步:在考虑“-”是否进栈时, 栈中元素为: + × 暂时输出的后缀表达式为: 3 5 2
第二步:此时应该与栈顶元素“×”比较:没有栈顶元素优先级高,则输出,此时栈中元素为: + 暂时输出的后缀表达式为: 3 5 2 ×
再与栈顶元素“+”比较:没有栈顶元素优先级高,则输出,此时栈中元素为: 空 暂时输出的后缀表达式为: 3 5 2 × +// 我遇到的问题是如何调用符号“+”
此时栈中没有元素,则“-”入栈。
...
最后得到的后缀表达式为:3 5 2 × + 1 - =
因为我符号优先级进行比较运用的方法是构建一个数组,因此在调用已经存入栈的元素不好再进行调用(它的横坐标与纵坐标每次赋值没有规律,不好进行赋值)。
- 解决方案:我们这个项目进行计算时不用考虑包含括号的运算。因此我们发现一个规律:当需要进行二次符号比较时,往往是将栈中的元素全部输出,且栈中的元素最多不会超过两个!因此我们的解决方案是当需要进行二次比较时,就把栈中元素全部输出即可!

************************************************************************************************
*******************************************分割线*********************************************
************************************************************************************************ - 问题二:

图中的正确答案都是一样的,但是问题不同的!! - 解决方案:我们猜测出现这个问题的原因是:在从自己创建的文件中读取写入的问题时,每一次都是只读取第一行。因此在读取第一行以后需要跳过已经读取过的行。因此我增添了下面语句,用于跳过已经读取的行。

4.UML类图:

5.项目代码链接:
6.成员感想总结:
20172309:
嗯,写到这时这个项目也总算是做完了。心中难免是有点激动与开心的(特别是看到与队友一起制作的程序运行的时候),但是我觉得,我们更应该记住的是在制作这个项目过程中所收获的东西。
最初与队友接到这个项目的时候,队友与我都是一头雾水。因为我们两什么都不知道,我们就一起查资料。在第一周的时候,因为对这个项目的不了解,我不知道干什么,也不知道应该干什么,所以我就觉得非常的沮丧,甚至有过放弃的念头,但是这时队友就过来安慰我,让我不要放弃(在整个过程中,我们互相鼓励),同时她还已经完成了一部分的代码,同时还给我讲解。这就让我一下子了解了我下一步应该干什么(论队友的重要性!^_^),总而言之,再次感谢我的队友。
在此后的两周至今,队友与我都是秉承“谁有空就谁做,谁能做就多做”的观念进行编码的。在其中的过程中,我们一起讨论、分享自己的方法,然后把最好的方法在代码中实现。在这一过程中,因为队友最近都比较忙,所以项目编写任务自然地都落在我身上(队友准备请我吃饭吧)。在其间,我也遇到了不少问题,因此找了许多的同学帮忙。比如侯泽洋同学、郭恺同学(这里是他们的博客,就当给他们打广告吧)。不过,队友在百忙之中仍然很关心这个项目的,她时不时的在看过程序后给我提出程序存在的问题(队友是大佬,带我装×带我飞)。所以这个程序才能这么完美。20172310:
首先能和我的小伙伴组队我是感到很开心的。队友是个编程能力很不错的人哟
٩(๑❛ᴗ❛๑)۶,而且态度还很积极,完成了这次任务的很多事呢,给个大大的赞
(σ゚∀゚)σ..:*☆ 哎哟不错哦。
我认为我们做的好的方面是:
- 在任务分配上很快达成了一致,使得任务能够快速的进行下去。虽然前期我们是打算一起完成全部的任务,但考虑到各自的时间有差异,而且我的编程能力不是很好,所以为了更加的高效且团队成员能够都能展现自己能力,我们进行了采取了分工合作的方式。
- 在编程的时候我们都能拿出自己的看法,积极地讨论,然后接受队友的意见和想法,来完善我们的代码。
- 遇到困难的时候互相鼓励,一点一点地解决了困难。
做得不足的几个方面:
1. 对任务的整体把握不是很好,有些代码过于的繁琐,没能精简。
2. 因为后期我在忙一些复杂的(杂七杂八的)事情,所以导致队友一个人完成了很多的事情,我都没有出到什么力,不过好在队友很给力呢。
3. 编程能力还是有些欠缺,有些方式能够想得到,但是却都实现不了。
7. 好友评分:
| 王志伟 | 仇夏 | |
|---|---|---|
| 个人贡献度 | 50% | 50% |
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周的更多相关文章
- 2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周
2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...
- 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算
2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...
- 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周
2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...
- 2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算
2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算 需求分析: 支持整数,可进行多运算符运算,有优先级. 设计思路: 在有括号的情况下,先计算得出括号中的结果,如 ...
- 20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结
20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 在这次项目的完成过程中刘辰同学付出了很多,在代码的实践上完成的很出色,在技 ...
- 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...
- 20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...
- 20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...
随机推荐
- nodejs 文件拷贝
小文件拷贝 我们使用NodeJS内置的fs模块简单实现这个程序如下. var fs = require('fs'); function copy(src, dst) { fs.writeFileSyn ...
- mysql系列九、mysql语句执行过程及运行原理(分组查询和关联查询原理)
一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致 ...
- quart源码阅读(一)
def run( self,host: str='127.0.0.1',port: int=5000,ssl: Optional[SSLContext]=None,debug: Optional[bo ...
- nagios系列(八)之nagios通过nsclient监控windows主机
nagios通过nsclient监控windows主机 1.下载NSClient -0.3.8-Win32.rar安装在需要被监控的windows主机中 可以设置密码,此处密码留空 2.通过在nagi ...
- Node.js ECONNREFUSED错误
1 现象 node服务器 遇见此错误,如下:events.js:71throw arguments[1]; // Unhandled 'error' event^Error: connect ECON ...
- 【 总结 】Tcp Keepalive 和 HTTP Keepalive 详解
TCP Keepalive Tcp keepalive的起源 双方建立交互的连接,但是并不是一直存在数据交互,有些连接会在数据交互完毕后,主动释放连接,而有些不会,那么在长时间无数据 ...
- Python 正则表达式模块 (re) 简介
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...
- 在IDEA中实战Git
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程git仓库上获取项目源码 场景三:小 ...
- PHP PC端微信扫码支付【模式二】详细教程-附带源码(转)
博主写这破玩意儿的时候花了大概快两天时间才整体的弄懂逻辑,考虑了一下~还是把所有代码都放出来给大家~抱着开源大无私的精神!谁叫我擅长拍黄片呢?同时也感谢我刚入行时候那些无私帮过我的程序员们! 首先还是 ...
- Android的简单应用(二)——使用dispatchKeyEvent双击退出程序
原文:https://www.cnblogs.com/cpacm/archive/2014/11/10/4087070.html Android系统按键操作最先是在dispatchKeyEvent ...