像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量
设计思想:主要是随机的式子如何产生问题,和对产生的随机数的不同限制,题目避免重复的问题
建立一个式子类来对上述要求进行回应:
主要代码:
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]+" = "+'
'); //输出i+1表示第几道题;输出表达式加上“=”
%>
运行结果截图:
个人上课未完成的原因:
1.在生成规定的表达式时遇到了困难没有及时的解决
2.多种情况考虑不周