像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量
设计思想:主要是随机的式子如何产生问题,和对产生的随机数的不同限制,题目避免重复的问题
建立一个式子类来对上述要求进行回应:
主要代码:
class Zhengshu//整数类
{ String re1="";//初始化 “结果” String类型的 int re; String function(int r ,int q, int fun)// r最小值,q最大值,fun 选择 { //1有乘除法 2加减无负数 3除法无余数(12,1,0) String fu =""; String shizi=""; int a=(int)(Math.random()*(r)%(r-q+1)+q); int b=(int)(Math.random()*(r)%(r-q+1)+q); int c=(int)(Math.random()*4); if(fun==1) { if(c==0) { while(a+b>100){ a=(int)(Math.random()*(r)%(r-q+1)+q); b=(int)(Math.random()*(r)%(r-q+1)+q); } fu="+"; shizi=a+" "+fu+" "+b; re=a+b; re1=String.valueOf(re); } if(c==1) { fu="-"; //排除负数可能性 while(a-b<0) { a=(int)(Math.random()*(r)%(r-q+1)+q); b=(int)(Math.random()*(r)%(r-q+1)+q); } shizi=a+" "+fu+" "+b; re=a-b; re1=String.valueOf(re); } if(c==2) { while(a>10||b>10){ a=(int)(Math.random()*(r)%(r-q+1)+q); b=(int)(Math.random()*(r)%(r-q+1)+q); } fu="×"; shizi=a+" "+fu+" "+b; re=a*b; re1=String.valueOf(re); } if(c==3) { while(a>10||b>10){ a=(int)(Math.random()*(r)%(r-q+1)+q); b=(int)(Math.random()*(r)%(r-q+1)+q); } fu="÷"; //排除分母为0的可能性和余数的可能性 while(b==0||a==0) { a=(int)(Math.random()*(r)%(r-q+1)+q); b=(int)(Math.random()*(r)%(r-q+1)+q); } re=a; shizi=a*b+" "+fu+" "+b; re1=String.valueOf(re); } } return shizi;//返回字符串 } }for(int j=0;j<geshu;j++)
{ Array[i]=a.function(100,1,1);//返回第一个字符串(字符串) /*if(i>0)//不满足条件,i的初值为零 { for(int z=0;z<i;z++) { if((Array[z].equals(Array[i]))) { Array[i]=a.function(100,1,1); z=-1; } } }*/ //out.println(i+1+": "+Array[i]+" = "+'\n'); //输出i+1表示第几道题;输出表达式加上“=” %>运行结果截图:
个人上课未完成的原因:
1.在生成规定的表达式时遇到了困难没有及时的解决
2.多种情况考虑不周