题目要求:
1、题目避免重复;
2、可定制(数量/打印方式);
3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;
思路:
在原有程序中用数组实现避免重复;
用if、for语句实现客定制;
用控制面板实现客定制;
源代码:
import java.util.Random;
import java.util.Scanner;
public class Yunsuan
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner input =new Scanner(System.in);
System.out.print("请输入题目数量:");
int num=input.nextInt();
System.out.print("请输入数值范围(最小、最大)");
int sc1=input.nextInt();
int sc2=input.nextInt();
System.out.print("是否有乘除法(若有选择1、若无选择0):");
int c1=input.nextInt();
if(num<0)
System.out.print("输入有误,请重新输入!");
else
{
Random a=new Random();
Random b=new Random();
Random c=new Random(4);
int[] array1= new int[num];
int[] array2=new int[num];
int[] array3=new int [num];
for(int i=0;i<num;i++)
{
array1[i]=a.nextInt(sc2-sc1+1)+sc1;
array2[i]=b.nextInt(sc2-sc1+1)+sc1;
if(i>=1) //排除重复数
{
if(array1[i]==array1[i-1] && array2[i]==array2[i-1]&&array3[i] ==array3[i-1])
{
i--;
break;
}
}
if(c1==1)
for(int j=0;j<num;j++)
{array3[j]=c.nextInt(4); }
else
for(int m=0;m<num;m++)
{array3[m]=c.nextInt(2);}
switch(array3[i])
{case 0:
System.out.println(array1[i]+"+"+array2[i]+"=");
break;
case 1:
System.out.println(array1[i]+"-"+array2[i]+"=");
break;
case 2:
System.out.println(array1[i]+"x"+array2[i]+"=");
break;
case 3:
if(array2[i]!=0)
System.out.println(array1[i]+"/"+array2[i]+"=");
else
i--;
break;
}
}
}
}
}
结果截图:
时间日志:
日期 |
开始时间 |
结束时间 |
净 时间 |
3/17 | 19:00 | 21:00 | 120 |
3/18 | 14:00 | 16:00 | 120 |
319 | 16;00 | 18:00 | 120 |