自己取一个大气又可爱的标题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 20 | 15 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 60 | 40 |
• Design Spec | • 生成设计文档 | 60 | 60 |
• Design Review | • 设计复审 | 20 | 30 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
• Design | • 具体设计 | 30 | 20 |
• Coding | • 具体编码 | 200 | 150 |
• Code Review | • 代码复审 | 20 | 25 |
• Test | • 测试(自我测试,修改代码,提交修改) | 100 | 120 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 40 | 50 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 35 |
合计 | 575 |
二、需求分析
我通过百度的方式了解到,小学一年级数学有如下的几个特点:
- 特点1 不能出现小数和负数
- 特点2 数字要求在0到100之间
经过分析,我认为,这个程序应当:
- 使用的数字在0到100之间,且用int类型
- 被减数和减数不能为负数,且被减数要大于减数
三、设计
1. 设计思路
说明你如何设计这个程序
- 这个程序有1个类
- 题目与答案应该正确匹配
- 运用随机数生成题目
2. 实现方案
写出具体实现的步骤
- 准备工作:先在Github上创建仓库,克隆到本地...
- 技术关键点:出的题目必须是随机的
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
1.一年级题目中出现超过100的数
解决方法:把随机数的范围从2个都是100改为第一个数范围为100,第二个数范围为100-第一个数。
2.答案出现负数
解决方法:if(x<y){t=x;x=y;y=t;},第一个数为x,第二个数为y,确保第一个数大于第二个数。
1. 调试日志
记录编码调试的日志,请记录下开发过程中的 debug 历程
- 用eclipse运行时出现
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at MathExam6384.main(MathExam6384.java:18)
解决方法:把public static void main(String[] arg)中的arg改为想要输出的数学题数。
2. 关键代码
if(Integer.parseInt(arg[1])==1)
{
for(i=1;i<=Integer.parseInt(arg[0]);i++)
{
x=ne.nextInt(100);
y=ne.nextInt(100-x);
if(x<y)
{
t=x;
x=y;
y=t;
}
a[i]=x;
b[i]=y;
if(x%2==0)
{
System.out.println("("+i+")"+" "+x+" "+"+"+" "+y+" "+"=");
}
else
{
System.out.println("("+i+")"+" "+x+" "+"-"+" "+y+" "+"=");
}
}
其中的a[i]=x;b[i]=y;是记录下数学题中的加数或者被减数和减数,确保在下一个for语句中实现题目与标准答案的数字一样;
其中if(x%2==0)是为了实现加法与减法出现的随机性。
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条:if语句括号中的等式要有两个等号。
- 第二条:每个语句结束后要用;收尾。
五、测试
测试1 java MathExam6384 2 1
结果
(1) 48 + 33 =
(2) 92 + 3 =
"-----------------标准答案-----------------"
(1) 48 + 33 = 81
(2) 92 + 3 = 95
测试2 java MathExam6384 2 2
结果
(1) 51 ÷ 17 =
(2) 88 + 1 =
"-----------------标准答案-----------------"
(1) 52 ÷ 17 = 3...1
(2) 88 + 1 = 89
六、总结
- 对于随机数的使用和写入文件还不是很熟练。
- 写出的题目第一个数一定比第二个数大,这是我为了解决不出现负数所遗留下来的问题,还不能解决。