三年级计算
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 7000 | 8600 |
• Estimate | • 估计这个任务需要多少时间 | 7000 | 8600 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 500 | 630 |
• Design Spec | • 生成设计文档 | 200 | 230 |
• Design Review | • 设计复审 | 50 | 70 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 200 | 350 |
• Design | • 具体设计 | 700 | 630 |
• Coding | • 具体编码 | 900 | 960 |
• Code Review | • 代码复审 | 200 | 390 |
• Test | • 测试(自我测试,修改代码,提交修改) | 200 | 150 |
Reporting | 报告 | 200 | 320 |
• Test Repor | • 测试报告 | 100 | 170 |
• Size Measurement | • 计算工作量 | 200 | 121 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | ||
合计 |
二、需求分析
我通过上网百度和实践问答的方式了解到,小学三年级四则混合运算有如下的几个特点:
1.运算符在2~4个
2.可以加括号进行优先级运算
3.减法运算的结果不能为负数
4.除法运算除数不为零,不能有余数,必须要能整除
5.先乘除后加减,有括号的括号内的先运算
经过分析,我认为,这个程序应当:
1.减法运算的结果不能有负数
2.除法运算除数不能为0,不能有余数
3.使用的数字0~100
三、设计
1. 设计思路
这个程序有一个类,八个方法(一个重构方法)
产生随机数字和两数运算时:
1.保证两个数字不超过50;
2.如果是加法运算的话,两个数字的和不超过100;
3.如果是减法运算的话,不应该产生结果为负数的式子;
4.设计三年级的函数gradeThree
5.在判断年级的函数judgeGrade内添加运行gradeThree的情况
2. 实现方案
- 写出具体实现的步骤
ReversePolishNotation()将原始式子转化为后缀形式(逆波兰)
stack(String zf)将传入的字符传入存放字符的栈中
judge(String str1, String str2)判断两个传入的字符的优先级哪个高
生成三个0~100随机数
利用random函数+sigh数组随机获取两个运算符
生成题号和题目
按顺序判断第一个运算符号和第二个运算符号 遵循先乘除后加减原则,将预算结果存入answer变量中
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
1. 调试日志
运用逆波兰公式的时候忘记加入优先级,导致只能按顺序加减乘除,不会出现先乘除后加减的正确结果。
输出到文本的时候遇到了问题,使用System.setOut(ps); 可以输出到out.txt文本中,但是不能输出的到命令窗口中;使用System.out.println(ps); 则相反
2. 关键代码
3. 代码规范
- 请给出本次实验使用的代码规范:
做好缩进和利用空行分隔
单行字符数限制不超过120个
并人工检查代码是否符合规范
五、测试
测试两种输入方式
测试三个年段都能运行
六、总结
写代码前要先构思一遍,可以现在文档中先写伪代码,先写出整体框架,再去细化,一定一定要先构思,不要边写边想
要考虑到各种情况,针对各种情况改写代码!
四则运算的优先级问题非常复杂