需求分析
功能需求:
1、能自动生成小学四则运算题目。
2、程序能接受用户输入答案,并判定对错。
3、给出总共正确的数量。
设计
1、定义s为一组1至4的随机数,使用which(s)语句,case s 分别为四则运算的加减乘除。在case 语句中定义两个变量,为a和b,使它们能产生0至100之间的随机数,用来做四则运算。
2、which语句外层在编写一个while语句,使得which能循环多次,进行多个计算。
3、定义一个h记录做题正确的数目,初始值为0。
代码实现
代码:
import java.util.Scanner;
public class ruanjian {
public static int suiji(int num1,int num2){
int C=(int)num1+(int)(Math.random()*(num2-num1));
return C;
}
public static void main(String[] args) {
int S,a,b,i=1,f=0,h=0;
double D;
while(i<=5){
S=suiji(1,4);
i=i+1;
a=suiji(0,100);
b=suiji(0,100);
switch(S){
case 1 :
System.out.println(a+"+"+b+"=");
Scanner reader=new Scanner(System.in);
D=reader.nextInt();
if(D==a+b){
h++;
}
else{
System.out.println("答错了,正确答案是:"+(a+b));
}
break;
case 2 :
System.out.println(a+"*"+b+"=");
Scanner reader1=new Scanner(System.in);
D=reader1.nextInt();
if(D==a*b){
h++;
}
else{
System.out.println("答错了,正确答案是:"+(a*b));
}
break;
case 3 :
System.out.println(a+"-"+b+"=");
Scanner reader2=new Scanner(System.in);
D=reader2.nextInt();
if(D==a-b){
h++;
}
else{
System.out.println("答错了,正确答案是:"+(a-b));
}
break;
case 4 :
System.out.println(a+"/"+b+"=");
Scanner reader3=new Scanner(System.in);
D=reader3.nextInt();
if(D==a/b){
h++;
}
else{
System.out.println("答错了,正确答案是:"+(a/b));
}
break;
}
continue;
}
System.out.println("您一共答对了"+h+"道题");
}
}
程序效果截图:
PSP耗时统计
总结
对于程序的编写思路事先就写在稿纸上,只花了一个晚上就把最简单的代码写出来了,但是在修改过程中遇到了几个问题,对于break和continue选择一度陷入困境,因为我的代码在运行多个计算时a和b显示的是同一个值,我以为是break和continue没有选择对,但在向老师咨询后发现我定义的a与b产生随机数的步骤写在了while循环之前。除此之外我希望能在之后的设计改进中能同时列出多个题目,使得使用者能同时写出答案。