结对作业1
小学出题器
- 学号1:211606306 黄柏涛
- 学号2:211606308 江东
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 1200 | 1365 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 200 | 240 |
• Design Spec | • 生成设计文档 | 60 | 70 |
• Design Review | • 设计复审 | 60 | 70 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 80 | 90 |
• Design | • 具体设计 | 80 | 90 |
• Coding | • 具体编码 | 60 | 70 |
• Code Review | • 代码复审 | 20 | 40 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 70 | 90 |
• Test Repor | • 测试报告 | 60 | 70 |
• Size Measurement | • 计算工作量 | 20 | 35 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 50 | 55 |
合计 | 1842 |
二、需求分析
我通过谷歌的方式了解到,小学一年级数学有如下的几个特点:
- 特点1:小学三年级已经学习了九九乘法表。
- 特点2:小学三年级开始学习混合运算了。
经过分析我认为这个程序 - 带括号的整数四则运算。
三、设计
1. 设计思路
说明你如何设计这个程序
比如:
- 这个程序的混合运算需要用到逆波兰公式。
- 调用函数实现 各个年级的输入和题目和答案的输出。
- 把代码打印到output.txt文件里。
- ...
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地,完成后提交。
- 技术关键点:要现在Eclipse先打出代码然后把代码输入到out.txt文件后,要在cmd上运行检测。在基础的代码上还要加入四则运算。
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
1. 调试日志
- 运用逆波兰公式的时候忘记加入优先级,导致只能按顺序加减乘除,不会出现先乘除后加减的正确结果。
2. 关键代码
private static void Reverse Polish Notation(String[] strArr){
String str = "+-/";
Stack
//遍历数组中的每一个元素
for(String s : strArr){
if(!str.contains(s)){
//如果是数字,放入栈中
stack.push(s);
}else{
int a = Integer.valueOf(stack.pop());
int b = Integer.valueOf(stack.pop());
switch(s){
case "+" :
stack.push(String.valueOf(a+b));
break;
case "-" :
stack.push(String.valueOf(b-a));
break ;
case "
stack.push(String.valueOf(a*b));
break;
case "/" :
stack.push(String.valueOf(b/a));
break ;
}
}
}
System.out.println(stack.pop());
}
注:这段逆波兰表达式是我百度的https://blog.csdn.net/Willard1314/article/details/71425553
3. 代码规范
- 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式。
- 代码中的命名均不能以下划线或美元符号开始,也不能一下划线或美元符号结束。
- 类型与中括号紧挨相连来定义数组。
- 代码中命名只能用英文。
五、测试
六、总结
这一次的实验是在第一次的基础上提升,原本以为会比上次简单点,但是实际操作却超乎想象,除法的被除数不能为0,四则运算的优先级问题都令我焦头烂耳,最后也只能是在同学的帮助下才勉勉强强完成了这一次的作业。