211606325 邱东宝 211606312 赖志斌
结对作业
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 60 | 60 |
• Design Spec | • 生成设计文档 | 60 | 140 |
• Design Review | • 设计复审 | 20 | 20 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 40 |
• Design | • 具体设计 | 20 | 20 |
• Coding | • 具体编码 | 500 | 300 |
• Code Review | • 代码复审 | 20 | 100 |
• Test | • 测试(自我测试,修改代码,提交修改) | 200 | 300 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 40 | 100 |
• Size Measurement | • 计算工作量 | 15 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 50 | 100 |
合计 | 1200 |
二、需求分析
我通过网上搜索的方式了解到,小学三年级四则混合运算的几个特点:
- 特点1:加法、减法、乘法、除法组成的混合运算,可用加括号,由2-4个运算符组成
- 特点2:除法运算除数不能为0,不能有余数
- 特点3:减法运算的结果不能出现负数,小学三年级还没有负数
经过分析,我认为,这个程序应当:
- 计算结果不能出现负数
- 计算结果要在1000以内
- 不能出现重复的题目
三、设计
1. 设计思路
- 考虑随机的生成数,生成的个数
- 考虑随机生成数的计算,计算的优先级
- 考虑计算结果是否符合要求,如不符合,取消此次题目的生成
2. 实现方案
- 随机生成随机数
- 括号在计算式的中出现位置
- 本次出题是否符合要求,符合:输出 不符合:重新生成随机数
四、编码
1. 调试日志
在写逆波兰算法的时候遇到了许多错误,我们进行了多次的调试。
2. 关键代码
Stack<Integer>nums = new Stack<Integer>();//保存数字
Stack<Character>opes = new Stack<Character>();//保存操作符
int n = 0;//保存数字
char[] cs = string.toCharArray();//字符串转换为char数组
for(int i = 0;i<cs.length;i++){
char t =cs[i];
if(Character.isDigit(cs[i])){
n=10*n+Integer.parseInt(String.valueOf(t));
}else{
System.out.println("i:"+n+","+cs[i]);
if(n!=0){
System.out.println(n+cs[i]);
nums.push(n);
n=0;
}
if(t=='('){
opes.push(t);
}else if(t==')'){
while(opes.peek()!='('){
int a =cal(nums.pop(),nums.pop(),opes.pop());nums.push(a);}
opes.pop();
}
else if(isType(t)>0){
if(opes.isEmpty()){
opes.push(t);
}else{
if(isType(opes.peek())>=isType(t){
int a = cal(nums.pop(),nums.pop(),opes.pop());nums.push(a)}opes.push(a);
}
3. 代码规范
- 代码需要进行注释,方便之后的修改
- 禁止行太长,要及时换行,防止代码太乱
五、测试
由于能力不足,两个人没想出怎么解决如何在命令行输入所需格式参数且顺序不限,因此测试只能用一开始的输入方法测试,而且三年级的还没有解决。
测试 | 预计结果 | 实际结果 |
---|---|---|
不输入参数 | 输入有误! | 输入有误! |
只输入一个参数:100 | 输入有误! | 输入有误! |
-n 10 -grade 1 | 题目已经生成 | 题目已经生成 |
-n 10.5 -grade 1 | 输入有误! | 输入有误! |
-n ascc -grade 2 | 输入有误! | 输入有误! |
六、总结
- 在结对的作业中,需要两个人相互沟通,双方的想法进行整合