个人作业1
自己取的一个又不大气又不可爱的标题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 600 | 650 |
• Estimate | • 估计这个任务需要多少时间 | 600 | 650 |
Development | 开发 | 600 | 650 |
• Analysis | • 需求分析 (包括学习新技术) | 50 | 60 |
• Design Spec | • 生成设计文档 | 20 | 20 |
• Design Review | • 设计复审 | 20 | 30 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
• Design | • 具体设计 | 200 | 200 |
• Coding | • 具体编码 | 200 | 200 |
• Code Review | • 代码复审 | 30 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 40 | 40 |
Reporting | 报告 | 30 | 30 |
• Test Repor | • 测试报告 | 20 | 20 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 650 |
二、需求分析
我通过百度的方式了解到,小学一,二年级数学有如下的几个特点:
-100以内相加减
-不出现负数
-九九乘法表内的乘除
经过分析,我认为,这个程序应当:
- 使用的数字小于100
- 不能出现负数
- 没有小数
三、设计
1. 设计思路
- 判断输入的题目数量和年级数字是否符合规范
- 随机数的生成
- 调用函数实现不同年级不同随机题目生成
- 打印结果至屏幕以及output.txt
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地
- 技术关键点:输出至txt,判断输入的数字是否符合规范
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
判断输入的数字是否符合规范时,输入的格式为数字空格数字 使用String stringArray[] = inputString.split(" ");将以空格为分割将输入的数字存入数组,再进行下一步的编写
输出至txt时使用 PrintStream ps = new PrintStream("e:/output.txt");改变输出路径直接将输出打印至txt
1. 调试日志
判断输入数字时,先判断了输入是否为数字而忽略了是否为小数和负数
输入参数时没有限制输入的数字数量导致运行异常,后对数组长度进行了限制
2. 关键代码
while(true) {
Scanner sc = new Scanner(System.in);
String inputString = sc.nextLine();
String stringArray[] = inputString.split(" ");//将以空格为分割将输入的数字存入数组
if(stringArray.length>1) { //判断输入的是一个输入还是两个输入,两个输入则进行下面的步骤判断两个输入是否符合标准
try {
a = Integer.parseInt(stringArray[0]);
p = Integer.parseInt(stringArray[1]);
} catch (NumberFormatException e) { //判断输入的数字是否是数字不是则抛异常
System.out.println("输入错误,请重新输入");
continue;
}
if(stringArray.length>2) {System.out.println("数据过长请重新输入");continue;} //限制数组长度以限制输入
if(Integer.parseInt(stringArray[0])<0) {System.out.println("输入题目数量有误请重新输入");continue;}//存入数组的第一个数作为题目数量判断是否存在异常
if(Integer.parseInt(stringArray[1])!=1 && Integer.parseInt(stringArray[1])!=2) {System.out.println("输入年级有误请重新输入");continue;}//存入数组的第二个数作为年级判断是否存在异常
a = Integer.parseInt(stringArray[0]);
p = Integer.parseInt(stringArray[1]);
break;
}
else {//单个参数输入则默认为一年级只需判断输入的数字是否异常
try {
a = Integer.parseInt(stringArray[0]);
} catch (NumberFormatException e) {
System.out.println("输入错误,请重新输入");
continue;
}
if(Integer.parseInt(stringArray[0])<0) {System.out.println("输入题目数量有误请重新输入");continue;}
a = Integer.parseInt(stringArray[0]);
p=1;
break;
}
}
3. 代码规范
请给出本次实验使用的代码规范:
1.左大括号前不换行。
2.左大括号后换行。
3.右大括号前换行。
4.异常进行手动处理,不抛出。
5. 不反复开辟空间,合理利用开辟的空间
6. 进行适当合理的代码注释,方便理解,修正
7. 代码中的命名均不能以下划线或美元符号开始,也不能一下划线或美元符号结束。
8. 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
并人工检查代码是否符合规范
五、测试
-5 :输入题目数量有误请重新输入
0.1:输入错误,请重新输入
5:符合预期
abc :输入错误,请重新输入
abc 2 :输入错误,请重新输入
5 3:输入年级有误请重新输入
-1 2:输入题目数量有误请重新输入
5 1:符合预期
7 2:符合预期
六、总结
请总结过程中的教训和经验,思考
由于一个暑假好久没打代码好多东西都忘了。。。靠着不懂就百度的想法一步步慢慢的解决一个个遇到的问题,虽然中途心态爆炸过几次但还是坚持下来了,经过好多次删删改改终于写的有丶样子了,总结:有问题不能轻言放弃说不定下一个问题就能百度出来了。只会重写方法不懂重构怎么办。。。