结对作业1
211606352 陈彬 2116006368林书浩
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 35 | 40 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 35 | 40 |
• Design Spec | • 生成设计文档 | 30 | 40 |
• Design Review | • 设计复审 | 50 | 45 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 35 |
• Design | • 具体设计 | 40 | 50 |
• Coding | • 具体编码 | 800 | 900 |
• Code Review | • 代码复审 | 100 | 110 |
• Test | • 测试(自我测试,修改代码,提交修改) | 100 | 100 |
Reporting | 报告 | 20 | 20 |
• Test Repor | • 测试报告 | 10 | 10 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 5 | 5 |
合计 | 1265 |
二、需求分析
小学要注重题目的简易程度
相对一二年级 难度应该有所提升
三四年级的计算还是要在得值要在1000以内并且要有加减乘除
经过分析,我认为,这个程序应当:
根据上一次的作业,使程序更加复杂,能运算出更多的内容。
三、设计
1. 设计思路
- 四则运算的生成
- 输出到out.txt
2. 实现方案
- 使用逆波兰函数
- 正则表达式
四、编码
1. 调试日志
-出现除零异常,发生原因可能是因为没有考虑分母为零的情况
-输出结果为空值,发生原因可能是因为在用栈的时候没有安排好顺序
2. 关键代码
// 比较两个运算符的优先级
private static int cmpOper(String op1, String op2) {
if (op1.equals("+") || op1.equals("-")) {
if (op2.equals("+") || op2.equals("-")) {
return 0;
} else {
// if (op2.equals("") || op2.equals("/")) {}
return -1;
}
}else{
// if (op1.equals("") || op1.equals("/"))
if (op2.equals("+") || op2.equals("-")) {
return 1;
} else {
// if (op2.equals("*") || op2.equals("/")) {
return 0;
}
}
}
// 判断字符串是否为数字
private static boolean isNumber(String s) {
try {
Integer.parseInt(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}
3. 代码规范
-变量都需要先赋予初始值
-代码中的命名严禁使用拼音与英文混合,更不许使用中文命名。
-不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护。
-并人工检查代码是否符合规范
-不允许任何未经预先定义的常量直接出现在代码中
五、测试
-gread10 -n 3
-n 10 -gread 3
-没有输入前面的-n和-gread
-只输入一个数据
-极大的数值
-负数
-字母
六、总结
-这次作业有很多的困难需要大佬的帮助,相比上一次的作业这次的作业更难,但也有了很多收获,代码中标注注释对以后审查代码更加方面容易.