1.程序设计思想:首先,写一个生成算式的方法,方法里面,生成4以内的随机数,分别用来表示加减乘除,因为Random方法不能直接生成一个数到一个数的随机数,只能从0开始,所以生成0到最大值减去最小值直接的随机数 ,然后在加上最小值,得到最大值和最小值直接的随机数,让两个数和他们的符号,形成一个String类型的字符串,最后返回这个字符串。然后在主函数里面写一个要求菜单,来控制打印数量和最小值、最大值,然后再通过一个for循环来进行生成所要生成的算式数量,再for循环里面通过调用生成算式方法,来获取算式,并且存放在一个数组当中,通过该算式和前面所有算式比较,相同的话继续生成新的算式,来避免重复性,最后输出数组,得到算式。
2.程序源代码:
package cal;
import java.util.*;
public class calculater {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
int num=0;
int large=0;
int little=0;
boolean flag=true;
while(flag) //控制需要打印题目的个数
{
System.out.println("请输入需要生成的题目数量");
num=in.nextInt();
System.out.println("请输入题目上限");
large=in.nextInt();
System.out.println("请输入题目下限");
little=in.nextInt();
flag=false;
}
String n[]=new String [num];
for(int i=0;i<num;i++) //避免题目重复
{
n[i]=calc(little,large);
int j=i-1;
while(j>=0)
{
if(n[i].equals(n[j])) //题目重复时,重新生成
{
n[i]=calc(little,large);
j=i;
}
j--;
}
System.out.println(n[i]);
}
in.close();
}
public static String calc(int a,int b) //生成两个界限直接的随机数,并加上符号,
{
int f=0;int x=0;int y=0;
Random random=new Random();
String [] fh=new String [4];
f=random.nextInt(4);
x=random.nextInt(b-a)+a; //生成0--b-a直接的数,然后再+a 正好得到a-b直接的随机数
y=random.nextInt(b-a)+a;
fh[0]="+";
fh[1]="-";
fh[2]="*";
fh[3]="/";
if(f==3&&y==0)
{
y=random.nextInt(b-a)+a;
}
int z=x-y;
if(f==1&&z<0)
{int t=x;
x=y;
y=t;}
return x+fh[f]+y+"=?";
}
}
3.结果截图:
4.上课未及时完成原因:
思维有点混乱,再控制避免重复方法上犹豫,思路有点杂乱,没有找到一条清晰的路线导致未能及时完成。