一、题目:随机生出小学四则运算题目。减法结果不能为负数;乘法结果小于100;除法除数不为零,并且能够整除。①.题目避免重复;②.可定制(数量和打印方式)。
二、设计思路
1、随机生成两个操作数和一个代表运算符号的数;
2、要避免重复就要和之前出现的作比较,所以原来出现过的数据就要存下来,我定义了三个数组分别来存储两个操作数和代表运算符号的数;
3、判断随机生成的三个数是否符合运算要求,是则以适当的形式输出,否则丢掉这组随机数,重新生成;
4、若选择你n个一行输出形式,则判断i(第i个式子)能否整除n,能则输出换行,否则不换行。
三、源程序
package org.yuan.Day1; import java.util.Scanner; public class Yunsuan { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print("请输入算式的 个数:"); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); System.out.print("输入几个式子换一行:"); int k=sc.nextInt(); int []x=new int[1000]; int []y=new int[1000]; int []p=new int[1000]; for(int i=0;i<n;i++) { x[i]=(int)(Math.random()*100); y[i]=(int)(Math.random()*100); p[i]=(int)(Math.random()*4); for(int j=0;j<i-1;) { if(x[j]==x[i]&&y[j]==y[i]&&p[j]==p[i]) i--; break; } switch(p[i]) { case 0: System.out.print(i+1+"."+x[i]+"+"+y[i]+"="+" "); if((i+1)%k==0) { System.out.println("\n"); } break; case 1: if(x[i]>y[i]) { System.out.print(i+1+"."+x[i]+"-"+y[i]+"="+" "); if((i+1)%k==0) { System.out.println("\n"); } } else i--; break; case 2: if(x[i]*y[i]<100) { System.out.print(i+1+"."+x[i]+"*"+y[i]+"="+" "); if((i+1)%k==0) { System.out.println("\n"); } } else i--; break; case 3: if(y[i]!=0&&x[i]%y[i]==0) { System.out.print(i+1+"."+x[i]+"/"+y[i]+"="+" "); if((i+1)%k==0) { System.out.println("\n"); } } else i--; break; } } } }
四、实验总结:
1、通过这道题对随机数有了一些了解,掌握了生成随机数的基本方法;
2、实验过程中将换行部分的代码写在了switch语句外面,结果运行的时候就有的行距会特别大。原因是有的不符合的式子(恰巧能整除n的那些式子)丢掉了但在for循环里依旧执行。
原文:https://www.cnblogs.com/tianwenjing123-456/p/11552802.html