00-JAVA语法基础--课后作业

题目:像二柱子那样,花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语句实现,最终完成整个程序。

猜你喜欢

转载自www.cnblogs.com/Qi77/p/9750406.html
今日推荐