小学一二年级随机四则运算
Posted lzq3721
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学一二年级随机四则运算相关的知识,希望对你有一定的参考价值。
小学一二年级随机四则运算
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
? Estimate | ? 估计这个任务需要多少时间 | 1440 | 1085 |
Development | 开发 | ||
? Analysis | ? 需求分析 (包括学习新技术) | 120 | 100 |
? Design Spec | ? 生成设计文档 | 60 | 45 |
? Design Review | ? 设计复审 | 60 | 20 |
? Coding Standard | ? 代码规范 (为目前的开发制定合适的规范) | 60 | 45 |
? Design | ? 具体设计 | 120 | 90 |
? Coding | ? 具体编码 | 600 | 550 |
? Code Review | ? 代码复审 | 90 | 45 |
? Test | ? 测试(自我测试,修改代码,提交修改) | 150 | 110 |
Reporting | 报告 | ||
? Test Repor | ? 测试报告 | 60 | 30 |
? Size Measurement | ? 计算工作量 | 60 | 30 |
? Postmortem & Process Improvement Plan | ? 事后总结, 并提出过程改进计划 | 60 | 20 |
合计 | 1085 |
二、需求分析
我通过网上查找的方式了解到,小学一年级数学有如下的几个特点:
- 特点
- 一年级数学要求掌握10以内的加减法,结果不大于20,不小于0.
被减数不能大于减数
经过分析,我认为,这个程序应当:- 使用的数字小于10
- 数字定义类型应为整数类型
需要能按要求生成n道题目,并且其题目随机生成
三、设计
1. 设计思路
- 由于对象为一二年级的小学生,所以需要有一段语句判断是一年级还是二年级
- 由于对象为一二年级的小学生,所以生成的随机数不能太大,需随机生成数所以需要用到random()的方法
- 一年级学生中只有加减法,在二年级学生中需要加入乘除法
由于要求标准答案和题目分开,所以要将随机数存入数组,然后再输出
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地..
- 先想办法利用random()生成随机数生成加减法,然后逐步考虑生成乘除法
要将生成的随机数存入数组,为了标准答案和题目分开
四、编码
- 先思考一年级的加减法运算,将随机生成的数字存入数组,然后打印
- 然后再考虑二年级的加减乘除运算
1. 调试日志
- 在二年级的运算中,一开始没考虑到除数是0的情况,导致程序报错!
2. 关键代码
public static void two() {
System.out.println("题目的数量:");
Scanner n=new Scanner(System.in);
int x=n.nextInt();
int f[]=new int[x];
int v[]=new int[x];
int s[]=new int[x];
int l=0;
for(int m=0;m<x;m++) {
int a=(int)(0+Math.random()*10);
int b=(int)(0+Math.random()*10);
int c=(int)(0+Math.random()*4);
f[m]=a;
v[m]=b;
s[m]=c;
l++;
if(c==0) {
System.out.println(" ("+l+") " + a + " + " + b + " = ");
}
if(c==1 && b>a){
System.out.println(" ("+l+") " + b + " - " + a+" = ");
}
if(c==1 && a>b) {
System.out.println(" ("+l+") " + a + " - " + b + " = ");
}
if(c==2 || b==0) {
System.out.println(" ("+l+") " + a + " * " + b + " = ");
}
if(c==3 && b!=0) {
System.out.println(" ("+l+") " + a + " / " + b + " = ");
}
}
System.out.println("---------------标准答案---------------");
int t=0;
for(int h=0;h<x;h++) {
t++;
if(s[h]==0) {
System.out.println(" ("+t+") " + f[h] + " + " + v[h] + " = "+(f[h]+v[h]));
}
if(s[h]==1 && f[h]>v[h]){
System.out.println(" ("+t+") " + f[h] + " - " + v[h]+" = "+(f[h]-v[h]));
}
if(s[h]==1 && f[h]<v[h]) {
System.out.println(" ("+t+") " + v[h] + " - " + f[h]+" = "+(v[h]-f[h]));
}
if(s[h]==2 ||v[h]==0) {
System.out.println(" ("+t+") " + f[h] + " * " + v[h]+" = "+(f[h]*v[h]));
}
if(s[h]==3 && v[h]!=0) {
System.out.println(" ("+t+") " + f[h] + " / " + v[h]+" = "+(f[h]/v[h]));
}
3. 代码规范
请给出本次实验使用的代码规范:
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
- 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
- 接口类中的方法和属性不要加任何修饰符号(public 也不要加) ,保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
五、测试
测试序号 | 输入年级 | 输入题量 | 测试结果 |
---|---|---|---|
1 | 1 | 5 | 符合预期结果 |
2 | 1 | 4 | 符合预期结果 |
3 | 2 | 10 | 符合预期结果 |
4 | 2 | 3 | 符合预期结果 |
六、总结
- 由于之前基础不牢固,花了很多时间在编程上
- 还有很多小问题还没解决,还需要大量的时间来解决这些问题
- 思路在前期需要思考清楚,编码时才能事半功倍
- 花时间在一件有意义的事情上,你总会觉得时间过的很快,但最后收获很大
以上是关于小学一二年级随机四则运算的主要内容,如果未能解决你的问题,请参考以下文章