结对作业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 stack = new 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,四则运算的优先级问题都令我焦头烂耳,最后也只能是在同学的帮助下才勉勉强强完成了这一次的作业。

posted @ 2018-09-19 00:03  嗯冲  阅读(132)  评论(0编辑  收藏  举报