个人作业
一、预估与实际
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
| --------------------------------------- | -------------------------------- | -------- | -------- |
| Planning | 计划 | 695 | 860 |
| • Estimate | • 估计这个任务需要多少时间 | 695 | 860 |
| Development | 开发 | 695 | 860 |
| • Analysis | • 需求分析 (包括学习新技术) | 120 | 140 |
| • Design Spec | • 生成设计文档 | 20 | 30 |
| • Design Review | • 设计复审 | 30 | 40 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30| 40 |
| • Design | • 具体设计 | 80 | 100 |
| • Coding | • 具体编码 | 270 | 310 |
| • Code Review | • 代码复审 | 30 | 40 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 35 | 45 |
| Reporting | 报告 | 25 | 35 |
| • Test Repor | • 测试报告 | 20 | 25 |
| • Size Measurement | • 计算工作量 | 15 | 25 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 30 |
| | | 合计 | 860 |
二、需求分析
我通过百度和朋友的方式了解到,小学一、二年级数学有如下的几个特点:
- 1.一年级只有0-100以内的加减法运算;
- 2.一年级加减法运算结果不会为负数;
-
3.二年级乘除运算结果都为正数;
经过分析,我认为,这个程序应当:
- 一年级加减法运算结果都为正整数;
- 二年级乘除运算只有在1-9以内的运算,不能为0;
三、设计
1. 设计思路
用户输入的参数,需要判断是否符合要求,不符合就直接结束运算,符合就继续判断。
根据输入的参数,随机生成加减乘除运算,运算需要符合小学一二年级的算术规则,
加法不能大于100,减法不能小于0,乘除不能为0,最后要有文件的生成与写入。
2. 实现方案
写出具体实现的步骤
- 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地...
- 输出out.txt文件
- 如何用命令行输出参数
四、编码
- 用args[0]和args[1]数组来实现从命令行中接收到的参数
- 用Random来生成随机数
1. 调试日志
- 如果数组越界,就扩大数组;
- 无法用命令行直接传参,用args数组解决;
- 不会将运算后的结果写入txt文件里,经过百度以后找到了解决办法;
- 发生过题号都是1,原因是没有循环变量i或者j++;
- 本来题目是数量是10,运行后只输出5套题,原因是用了同一个循环变量i来统计题号和参与循环,导致集合越界。
- ArrayList集合中变量都为String类型,int类型的变量需要先强制转换成String类型。
2. 关键代码
>public static void h(ArrayList<String> list) { // 新建一个方法用来专门输出
int i = 0;
File toFile = new File("out.txt");
PrintStream ps = null;
OutputStream os = null;
try {
// ps=new PrintStream(toFile);//可直接传File
os = new FileOutputStream(toFile, false);// true在原文件上追加
ps = new PrintStream(os, true);// true自动刷新
for (i = 0; i <= 2*n- 2; i = i + 2) {
ps.println(list.get(i));
}
ps.println();
for (i = 0; i <= 2*n - 2; i = i + 2) {
ps.print(list.get(i));
ps.println(list.get(i + 1));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
ps.close();
}
}
创建out.text文件,把题目和答案存入txt文件中。
3. 代码规范
- 采用四个空格缩进,不能使用tab键
- 一些模糊的变量需要用//xxxxxxxxxxxxxxxx来备注,以便知道变量代表的什么意思
- 同一个类中避免出现相同的字母变量
- 尽量使用if{}else,不要一直if去判断
- 变量都需要先赋予初始值
- 在集合ArrayList中都要用String类型,将int类型强制转换成String类型。
五、测试
- 输入:100 2 输出结果: 100道小学二年级的乘除算法题目
- 输入:a100 2 输出结果: 输入有误
- 输入:1000 1 输出结果: 1000道小学一年级的加减算法题目
- 输入:100 a1 输出结果:输入有误
- 输入:100 2 2 输出结果: 输入有误
六、总结
- 需要养成代码缩进的好习惯;
- 写代码的格式很不规范,需要慢慢实践改善;
- 平时不常敲代码,对JAVA的一些基础知识的理解还有些欠缺,这次的很多不理解的地方经过朋友和百度的帮助下,解决了很多问题;
- 拿到项目前一定要先分析需求,构思好大致方向,才能高效率敲好代码。
- 下次我会继续努力,day day up!