题目:像二柱子那样,花20分钟写一个能自动生成30道小学四则运算题目的“软件”。
1 package 课堂作业1; 2 import java.util.Random; 3 import java.util.Scanner; 4 5 public class MathProblem { 6 7 public static void res(){ 8 System.out.println("1.显示结果\t2.直接开始下一题"); 9 } 10 public static void main (String[] arge){ 11 int i=1; 12 if(i<=30)//保证只是随机30道四则运算题目 13 { 14 System.out.println("*****请选择要随机生成的算法*****"); 15 System.out.println("1,加法\t2,减法\t3,乘法\t4,除法"); 16 System.out.println("*******************************"); 17 Scanner sc=new Scanner(System.in); 18 int s = sc.nextInt(); 19 double result=0; 20 Random r = new Random(); 21 int a = r.nextInt(100); 22 int b =r.nextInt(100); 23 switch(s){ 24 case 1:System.out.println(+a+"+"+b+"=?");result =a+b;res();break; 25 case 2:System.out.println(+a+"-"+b+"=?");result =a-b;res();break; 26 case 3:System.out.println(+a+"*"+b+"=?");result =a*b;res();break; 27 case 4:System.out.println(+a+"/"+b+"=?");{float c=a;float d=b;result=c/d;}res();break; 28 default:System.out.println("输入有误,重新开始");main(null);break; 29 } 30 Scanner select =new Scanner(System.in); 31 int se =select.nextInt(); 32 switch (se){ 33 case 1:System.out.println("本题的结果:"+result);main(null);break; 34 case 2:main(null);break; 35 default:System.out.println("输入有误,重新开始");main(null); 36 } 37 i++; 38 } 39 } 40 41 }
输出结果如下:
本次作业中最大的问题就是随机数生成的问题,其中用到了JAVA的Random类。
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
Random类中的常用方法:
Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:
a、public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b、public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。
c、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。
如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
d、public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
e、public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。
随机数的产生解决之后就是控制30道四则运算题目生成的问题,利用if语句实现,最终完成整个程序。