个人作业1

个人作业
一、预估与实际

| 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. 实现方案

写出具体实现的步骤

  1. 实现方案
    写出具体实现的步骤
  • 准备工作:先在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!
posted @ 2018-09-11 23:58  薛定谔的猫灬  阅读(160)  评论(1编辑  收藏  举报