211606368林书浩 211606352陈彬
一、预估与实际
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 |
合计 | 1405 |
二、需求分析
我通过上网查阅资料的方式了解到,小学三年级数学有如下的几个特点:
- 四则运算
- 同优先级从左往右顺序运算,高优先级先运算
三、设计
1. 设计思路
- 四则运算的生成
- 输出到out.txt
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; }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. 代码规范
请给出本次实验使用的代码规范:
- 1.再循环语句与判断语句后应该用缩进4格
- 2.注意缩写规范,避免忘文不知义
- 3.不允许任何未经预先定义的常量直接出现在代码中
- 4.左大括号前不换行,左大括号后换行,右大括号前换行,右大括号后还有东西这不换行,表示终止的右大括号后必须换行。.
五、测试
-
- gread10 -n 3
-
- n 10 -gread 3
- 没有输入前面的-n和-gread
- 只输入一个数据
- 极大的数值
- 负数
- 字母
六、总结
设计思路没有想好后面写代码的时候非常吃力