(1)题目要求
1.题目避免重复;
2.可定制(数量/打印方式);
3. 输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地;
4.定制操作数的个数;
5.定制是否有乘除法;
6.定制是否有括号(随机加入);
7.定制数值范围(确定操作数的取值范围);
(2)源代码
package sizeyunsuan; import java.util.*; public class sizeyunsuan { public static int[] randomCommon(int n,int min, int max) //生成随机数 { int[] result = new int[n]; int count = 0; while(count < n) { int num = (int) (Math.random() * (max - min)) + min; boolean flag = true; for (int j = 0; j < n; j++) { if(num == result[j]){ flag = false; break; } } if(flag){ result[count] = num; count++; } } return result; } public static char fh(int panduan) //生成随机运算符 { Random r = new Random(); int yunsuanfu= r.nextInt(100); char fh=' '; if(panduan==1) //有乘除 { switch(yunsuanfu%4) { case 0:fh='+';break; case 1:fh='-';break; case 2:fh='*';break; case 3:fh='/';break; } } else if(panduan==2) //无乘除 { switch(yunsuanfu%2) { case 0:fh='+';break; case 1:fh='-';break; } } return fh; } public static void main(String[] args) { System.out.println("请输入题目个数:"); Scanner input = new Scanner(System.in); int num=input.nextInt(); System.out.println("请输入操作个数(1.两个 2.三个)"); int czs=input.nextInt(); System.out.println("请输入数值范围:"); int a=input.nextInt(); int b=input.nextInt(); if((b-a)<num*(czs+1)) //系统崩溃条件 { System.out.println("系统崩溃!"); System.exit(0); } System.out.println("是否需要乘除运算(1.是 2.否)"); int cc=input.nextInt(); Random r = new Random(); int x,y,z; if(czs==1) //操作数为2时 { int []arr1 =randomCommon(num*2,a,b); for(int i=0;i<num*2;i++) { x=arr1[i]; y=arr1[i+1]; i++; System.out.println(""+x+fh(cc)+y+"="); } } else if(czs==2) //操作数为3时 { System.out.println("是否需要括号运算(1.是 2.否)"); int kh=input.nextInt(); int []arr2 =randomCommon(num*3,a,b); for(int i=0;i<num*3;i++) { x=arr2[i]; y=arr2[i+1]; z=arr2[i+2]; i+=2; if(kh==1) //随机加括号 { int kuohao= r.nextInt(99); switch(kuohao%2) { case 0:System.out.println("("+x+fh(cc)+y+")"+fh(cc)+z+"=");break; case 1:System.out.println(""+x+fh(cc)+"("+y+fh(cc)+z+")=");break; case 2:System.out.println(""+x+fh(cc)+y+fh(cc)+z+"=");break; } } else if(kh==2) //无括号 { System.out.println(""+x+fh(cc)+y+fh(cc)+z+"="); } } } } }
(3)问题&措施
1.问题:输出部分显示如下第一个数后的运算符无法显示
措施:此处主要是由于java输出中“+”的运用问题,若输出开始无引用输出,系统会自动认为输出“+”相连变量的和,而非分别输出变量。
因此只需在输出开头加上“ ""+ ”即可。