20172301 结对编程练习_四则运算 第二周 阶段总结
相关过程截图
关键代码解释
- (1)中缀表达式转后缀表达式,后缀表达式的计算 在我看来,这两个部分应该是四则运算的核心。为什么这么说呢?因为要想知道你的答案是否正确,必须要给出相对应的答案。
- 首先,我们要清楚为什么要把中缀表达式转换为后缀表达式。 其实是为了计算机更好的计算。如果按照正常的运算顺序,计算机无法判断
1+2*3
优先计算哪个。所以,我们必须人为地进行优先级排序,把1+2*3
转换为123*+
这样计算机就懂了原来先做乘法哦。 - 那么,如何实现中缀表达式转换为后缀表达式呢? 大致的思路是这样。我们要定义一个字符串和一个栈。因为我们最后输出的东西——后缀表达式,是一个字符串。根据刚刚的例子
123*+
。我们应该能够发现,当我们判断一个中缀表达式的时候,应该把数字直接划入字符串,符号入栈,然后再弹出。
然后通过
之后,要比较栈里面符号优先级的顺序。 把后入栈的符号和栈内的符号进行比较。如果后入的优先级高,那么就入栈;反之,则弹出栈内的符号后入栈。StringTokenizer
类把字符串进行分割。- 最后,后缀表达式如何计算出结果呢? 首先,我都把数字转化为Rationalnumber类型。整数就是分母为1的分数。
然后,通过switch语句,来分别调用Rationalnumber类的+-*/方法。
- 首先,我们要清楚为什么要把中缀表达式转换为后缀表达式。 其实是为了计算机更好的计算。如果按照正常的运算顺序,计算机无法判断
(2)
这个就是相对简单了,通过随机数来随机符合和随机表达式。这里就显示level的例子,其他同。Arithmetic类
中的等级
遇到的困难及解决方法
问题1:无法输入分数?我们有一个等级的是分数和整数的计算,而我们最后测试发现,用户并没有办法输入分数结果。
问题1解决方案:前几个方法都是nextInt。所以,用户只能输入int型。而实际上分数应该是String型的。所以我们修改了next。
这里李馨雨同学虽然修改了输入c1,却没有修改判题。导致了用户答案对却依然正确率为0的尴尬局面。( ̄▽ ̄)/
问题2:括号内的数字无法实现随机性。
问题2解决方案:最后检查发现这个和我们之前的错误一样。在进入循环之前,括号内的数字已经确定了。我定义了括号的方法,需要的时候我就调用这个方法。就可以保证括号内数字的随机性。
成功出现。ヽ( ̄▽ ̄)ノ
写出项目中自己负责的部分
中缀转后缀,后缀计算两个类的编写。(PS:本来后缀计算类是李馨雨同学编写的,后来她五一出去玩了 ̄へ ̄)
个人贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%)
姓名 | 郭恺 | 段志轩 | 李馨雨 |
---|---|---|---|
学号 | 20172301 | 20172304 | 20172328 |
贡献率(%) | 38% | 32% | 30% |
对结对的小伙伴做出评价给出小伙伴博客链接(重点指出需要改进的地方)
- 轩轩的思路有时候想法很好。我和他总是进行想法之间的碰撞。他构思,我来实现。比如括号的问题,他前后一共想出了三个方法。虽然我们只实现了两个方法,但是确实很有成就感。不过在基础方面希望他可以扎实一些,虽然实践是王道,但是没有基础是万万不行的。
- 李馨雨同学女孩子非常细心。总是把注释什么的写的特别完善。在基础理论方面也很扎实。我希望她以后遇到问题之后能先独立思考并独立查阅来增强自己的编程能力。
给出小组结对编程照片
眼睛和加菲猫的一样小。 (/ω\)
感受
这一周其实在项目上编程还是算轻松的。因为在上一周的时候,我们进行完了栈的编写。虽然这一部分主要是由我负责的,但是也少不了其他两个组员的努力。我们的时间,主要花费在了一些扩展项目和重点问题上,比如括号。我们针对这个已经给出了三种方案,但是实现的程度确实不高。通过这星期对I/O的学习,我们又将挑战下一个扩展。每次真的是想到掉头发,往往时间一下子就过去了,才发现高数啊,英语啊,概率论啊,都没有做。不过,多人合作的优点同样就是为了不让自己脱别的组员的后腿,会一直努力。后期的话,我可能会对时间做出限制,因为我们组员在这次周测成绩上都不出色,我希望我们能有更多的时间来实践书本。毕竟,想要实践好,必须要有基础啊!
PSP时间统计
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 65 |
Estimate | 估计这个任务需要多少时间 | 3 | 2 |
Development | 开发 | 2000 | 3000 |
Analysis | 需求分析 (包括学习新技术) | 350 | 300 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 10 |
Design UML | 设计项目UML类图 | 60 | 60 |
Coding | 具体编码 | 1500 | 2000 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Size Measurement | 计算工作量(实际时间 ) | 2 | 2 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 4395 | 5229 |