《抽奖随机数与枚举优秀PPT.ppt》由会员分享,可在线阅读,更多相关《抽奖随机数与枚举优秀PPT.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、抽奖随机数与枚举抽奖随机数与枚举你现在浏览的是第一页,共17页内容介绍内容介绍n11.1 任务预览任务预览n11.2 随机数及随机数及Random类类n11.3 可变参数方法可变参数方法n11.4 枚举类型枚举类型n11.5 本章小结本章小结n11.6 实训实训11:抽奖:抽奖你现在浏览的是第二页,共17页11.1 任务预览任务预览 n本章实训程序运行结果:本章实训程序运行结果:你现在浏览的是第三页,共17页11.2 随机数及随机数及Random类类 njava.util包的包的Random类对象是随机数生成器。如:类对象是随机数生成器。如:Random rand=new Random();R
2、andom rand2=new Random(12345L);/long型型随机数种子随机数种子n一般情况下,无需在一般情况下,无需在Random构造方法中给出随机数种子。构造方法中给出随机数种子。n生成随机数例:生成随机数例:int ir=rand.nextInt(100);/生成生成0到到99int随机数随机数double dr=rand.nextDouble();/生成生成0到到1(不含不含1)以内的以内的double型随机数型随机数n注意:还可调用注意:还可调用Math类的静态方法类的静态方法random()生成大于等生成大于等于于 0且小于且小于 1的的double型随机数:型随机数
3、:Math.random()你现在浏览的是第四页,共17页【例【例11-1】编程,随机抽取】编程,随机抽取1到到100范围内范围内10个个不同的数,并按升序输出。不同的数,并按升序输出。n分析:只是抽取分析:只是抽取10个不考虑重复情况的随机数的代码:个不考虑重复情况的随机数的代码:import java.util.*;public class Example1_2 public static void main(String args)Random rand=new Random();int nums=new int10;/存放随机数数组存放随机数数组 for(int i=0;i10;i+)
4、numsi=rand.nextInt(100)+1;/生成随机数生成随机数 Arrays.sort(nums);/数组元素按升序排序数组元素按升序排序 System.out.println(1到到100范围内的范围内的10个随机数如下:个随机数如下:);System.out.println(Arrays.toString(nums);你现在浏览的是第五页,共17页生成生成10个相互不重复的随机数程序个相互不重复的随机数程序 n在每次生成随机数时,把它依次与存在的随机数作比较。在每次生成随机数时,把它依次与存在的随机数作比较。Random rand=new Random();int nums=n
5、ew int10;for(int i=0;i10;i+)whiletag:while(true)/带标号语句,抽取第带标号语句,抽取第i个随机数个随机数 int randNum=rand.nextInt(100)+1;/生成随机数生成随机数 for(int j=0;ji;j+)/与数组保存的随机数依次比较与数组保存的随机数依次比较 if(randNum=numsj)/如果有重复,如果有重复,continue whiletag;/则继续则继续while循环循环(抽数抽数)numsi=randNum;/不重复,随机数保存到数组不重复,随机数保存到数组 break whiletag;/结束结束whi
6、le循环,返回外层循环,返回外层for循环循环 Arrays.sort(nums);/数组元素按升序排序数组元素按升序排序System.out.println(1到到100范围内不重复的范围内不重复的10个随机数:个随机数:);System.out.println(Arrays.toString(nums);你现在浏览的是第六页,共17页11.3 可变参数方法可变参数方法 类型类型.形参代表形参代表n方法调用时允许给出类型相同但数目不同的参数,例如方法调用时允许给出类型相同但数目不同的参数,例如0个、个、1个、个、2个、个、10个,等等。也可用数组作实参个,等等。也可用数组作实参.n形参代表可
7、看作是一个数组变量。形参代表可看作是一个数组变量。n一个方法只能有一个可变数目参数,并且是最后一个参数。一个方法只能有一个可变数目参数,并且是最后一个参数。你现在浏览的是第七页,共17页【例【例【例【例11-211-2】定义数目可变参数的方法,进行求和、找】定义数目可变参数的方法,进行求和、找】定义数目可变参数的方法,进行求和、找】定义数目可变参数的方法,进行求和、找最大值。最大值。最大值。最大值。class MethodC /方法类方法类 public static double sum(double.nums)throws Exceptionif(nums.length=0)/可变参数长度
8、即参数个数可变参数长度即参数个数 throw new Exception(没有数据、无法求和异常没有数据、无法求和异常);double sumvalue=0;for(int i=0;inums.length;i+)sumvalue+=numsi;return sumvalue;(1个数之和:个数之和:+MethodC.sum(1);(2个数之和:个数之和:+MethodC.sum(1,2);(3个数之和:个数之和:+MethodC.sum(1,2,3);(以数组作实参求以数组作实参求3个数之和:个数之和:+MethodC.sum(new double1,2,3);你现在浏览的是第八页,共17页
9、【例【例【例【例11-311-3】编程,定义抽奖方法进行抽奖。】编程,定义抽奖方法进行抽奖。】编程,定义抽奖方法进行抽奖。】编程,定义抽奖方法进行抽奖。/4个参数抽号方法:起始号、终止号、抽取个数、排除号码个参数抽号方法:起始号、终止号、抽取个数、排除号码(可变参数可变参数)public static int raffleNums(int from,int to,int amount,int.exclusion)throws Exception /在类在类Raffle 中定义中定义 if(to-from+1)-exclusion.length amount)throw(抽取范围内的数量必须不小
10、于要抽取的个数抽取范围内的数量必须不小于要抽取的个数);Random rand=new Random();int nums=new intamount;for(int i=0;iamount;i+)whiletag:while(true)/抽取抽取from到到to之间不重复随机数之间不重复随机数 int randNum=rand.nextInt(to-from+1)+from;for(int j=0;ji;j+)/与已有随机数比较与已有随机数比较 if(randNum=numsj)/如果有重复,如果有重复,continue whiletag;/则继续则继续while循环循环(抽数抽数)for(
11、int k=0;kexclusion.length;k+)/比较排除的号码比较排除的号码 if(randNum=exclusionk)continue whiletag;numsi=randNum;/不重复,保存到数组不重复,保存到数组break whiletag;/结束结束while循环,返回外层循环,返回外层for循环循环 return nums;你现在浏览的是第九页,共17页续续11-3 public static void main(String args)trySystem.out.println(抽取抽取20到到40范围内范围内6个数,排除个数,排除25和和35,结果如,结果如下:
12、下:);int nums=Raffle.raffleNums(20,40,6,25,35);Arrays.sort(nums);System.out.println(Arrays.toString(nums);System.out.println(抽取抽取1到到10范围内范围内5个数,排除个数,排除2、3和和4,结果如下:,结果如下:);int nums2=Raffle.raffleNums(1,10,5,2,3,4);System.out.println(抽取抽取101到到200范围内范围内8个数,结果如下:个数,结果如下:);int nums3=Raffle.raffleNums(101,
13、200,8);catch(Exception e)你现在浏览的是第十页,共17页11.4 枚举类型枚举类型 n声明、定义枚举类型简要语法:声明、定义枚举类型简要语法:enum 枚举类型名枚举类型名 枚举常量表枚举常量表 n如:如:enum Season Spring,Summer,Autumn,Winter n枚举类型枚举类型Season有有4个枚举常量。个枚举常量。n使用枚举常量须用枚举类型名作前缀,如使用枚举常量须用枚举类型名作前缀,如 Season.Springn输出时只显示枚举常量名,如输出时只显示枚举常量名,如 Spring。n枚举类型和枚举常量都是标识符,可用中文起名。如:枚举类型
14、和枚举常量都是标识符,可用中文起名。如:nenum 季节季节 春春,夏夏,秋秋,冬冬 n于是,枚举常量表示为:季节于是,枚举常量表示为:季节.春、季节春、季节.夏,等等。夏,等等。n注意:枚举是特殊的类类型。成员除了枚举常量外,还可包注意:枚举是特殊的类类型。成员除了枚举常量外,还可包含构造函数、字段和方法。一般语法形式:含构造函数、字段和方法。一般语法形式:enum 枚举类型名枚举类型名 允许包含参数的枚举常量表允许包含参数的枚举常量表;字段字段;构造函数构造函数;方法方法 你现在浏览的是第十一页,共17页【例【例【例【例11-411-4】编程,定义表示季节的枚举类型,然后】编程,定义表示季
15、节的枚举类型,然后】编程,定义表示季节的枚举类型,然后】编程,定义表示季节的枚举类型,然后输出相关的枚举常量。输出相关的枚举常量。输出相关的枚举常量。输出相关的枚举常量。enum Season Spring,Summer,Autumn,Winter /枚举类型枚举类型public class Example4 /主类主类 public static void main(String args)System.out.print(上半年有上半年有2季:季:);Season q1=Season.Spring;/枚举变量声明和赋值枚举变量声明和赋值 Season q2=Season.Summer;Sy
16、stem.out.println(q1+,+q2);System.out.print(上半年季节序号:上半年季节序号:);System.out.print(q1.ordinal()+,+q2.ordinal();/量序号量序号 System.out.println(n一年一年4季是:季是:);Season quarter;/声明季节枚举类型变量声明季节枚举类型变量 for(int i=0;i4;i+)quarter=Season.values()i;/Season数组数组System.out.print(quarter+);你现在浏览的是第十二页,共17页【例【例11-5】编程,定义一个含有构
17、造函数、字段】编程,定义一个含有构造函数、字段和方法的关于奖品的枚举类型。在主类中输出这和方法的关于奖品的枚举类型。在主类中输出这些奖品的名称、价值和数量。些奖品的名称、价值和数量。enum AwardType /奖品枚举类型奖品枚举类型手提电脑手提电脑(5000,1),/奖品名称奖品名称(价值价值,数量数量)电视机电视机(3000,2),电冰箱电冰箱(1800,3),洗衣机洗衣机(1200,5),微波炉微波炉(600,10);private int worth;/价值字段价值字段private int amount;/数量字段数量字段AwardType(int worth,int amoun
18、t)/非非public构造方法构造方法 this.worth=worth;this.amount=amount;public int getWorth()/获取价值方法获取价值方法 return this.worth;public int getAmount()/获取数量方法获取数量方法 return this.amount;你现在浏览的是第十三页,共17页续例续例11-5public class Example5 /主类主类public static void main(String args)System.out.println(所有奖品如下:所有奖品如下:);for(AwardType
19、aw:AwardType.values()System.out.print(aw.name();System.out.print(:价值:价值+aw.getWorth()+元,元,);System.out.print(数量数量+aw.getAmount()+个个);System.out.println();你现在浏览的是第十四页,共17页11.5 本章小结本章小结 n随机类随机类Random对象的方法能生成一定范围内的随机数,数对象的方法能生成一定范围内的随机数,数据类型有整型、实型等。据类型有整型、实型等。n方法中数目可变的参数即相当于一个数组,不过每次调用时方法中数目可变的参数即相当于一个
20、数组,不过每次调用时允许直接给出数目不等的数据作实参。允许直接给出数目不等的数据作实参。n可变参数是数组参数的一种扩充。可变参数是数组参数的一种扩充。n一个方法最多只能有一个可变参数,并且只能排在后面。一个方法最多只能有一个可变参数,并且只能排在后面。n枚举类型是特殊的类类型,对象就是大括号内的枚举常量。枚举类型是特殊的类类型,对象就是大括号内的枚举常量。n枚举类型专门用于管理内容固定、数量有限的数据。枚举类型专门用于管理内容固定、数量有限的数据。n枚举不同于数组,数组的元素相当于一个变量,而枚举元素枚举不同于数组,数组的元素相当于一个变量,而枚举元素则是常量。则是常量。你现在浏览的是第十五页
21、,共17页11.6 实训实训11:抽奖:抽奖 n(1)编写按号码进行抽奖的程序,功能如下:抽号范围可)编写按号码进行抽奖的程序,功能如下:抽号范围可随意设置,共有随意设置,共有3个等级,各等奖的个数也可随意设置,但个等级,各等奖的个数也可随意设置,但抽奖总数不能大于抽号范围数,并且中奖号码不能重复。抽奖总数不能大于抽号范围数,并且中奖号码不能重复。n(2)编写人人有份的抽奖程序,设奖品有:手提电脑、电)编写人人有份的抽奖程序,设奖品有:手提电脑、电视机、冰箱、洗衣机、微波炉等家用电器(这里不考虑奖品视机、冰箱、洗衣机、微波炉等家用电器(这里不考虑奖品的数量,假设每人都能抽到一个奖品的数量,假设每人都能抽到一个奖品人人有份)。要求人人有份)。要求运行程序时输入标识抽奖者的任意字符串,便可抽到其中一运行程序时输入标识抽奖者的任意字符串,便可抽到其中一种奖品,若输入种奖品,若输入exit,则结束程序。,则结束程序。你现在浏览的是第十六页,共17页谢谢!谢谢!返回目录 结束放映你现在浏览的是第十七页,共17页
限制150内