版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
抽奖随机数与枚举第1页,课件共17页,创作于2023年2月内容介绍11.1任务预览11.2随机数及Random类11.3可变参数方法11.4枚举类型11.5本章小结11.6实训11:抽奖第2页,课件共17页,创作于2023年2月11.1任务预览本章实训程序运行结果:
第3页,课件共17页,创作于2023年2月11.2随机数及Random类java.util包的Random类对象是随机数生成器。如: Randomrand=newRandom(); Randomrand2=newRandom(12345L);//long型随机数种子一般情况下,无需在Random构造方法中给出随机数种子。生成随机数例: intir=rand.nextInt(100);//生成0到99int随机数 doubledr=rand.nextDouble();//生成0到1(不含1)以内的double型随机数注意:还可调用Math类的静态方法random()生成大于等于0且小于1的double型随机数:Math.random()第4页,课件共17页,创作于2023年2月【例11-1】编程,随机抽取1到100范围内10个不同的数,并按升序输出。分析:只是抽取10个不考虑重复情况的随机数的代码:importjava.util.*;publicclassExample1_2{ publicstaticvoidmain(String[]args){ Randomrand=newRandom(); int[]nums=newint[10];//存放随机数数组 for(inti=0;i<10;i++){ nums[i]=rand.nextInt(100)+1;//生成随机数 } Arrays.sort(nums);//数组元素按升序排序 System.out.println("1到100范围内的10个随机数如下:"); System.out.println(Arrays.toString(nums)); }}第5页,课件共17页,创作于2023年2月生成10个相互不重复的随机数程序在每次生成随机数时,把它依次与存在的随机数作比较。Randomrand=newRandom();int[]nums=newint[10];for(inti=0;i<10;i++){whiletag:while(true){//带标号语句,抽取第i个随机数intrandNum=rand.nextInt(100)+1;//生成随机数 for(intj=0;j<i;j++){//与数组保存的随机数依次比较 if(randNum==nums[j]){//如果有重复, continuewhiletag;//则继续while循环(抽数) }} nums[i]=randNum;//不重复,随机数保存到数组 breakwhiletag;//结束while循环,返回外层for循环}}Arrays.sort(nums);//数组元素按升序排序System.out.println("1到100范围内不重复的10个随机数:");System.out.println(Arrays.toString(nums));第6页,课件共17页,创作于2023年2月11.3可变参数方法类型...形参代表方法调用时允许给出类型相同但数目不同的参数,例如0个、1个、2个、…、10个,等等。也可用数组作实参.形参代表可看作是一个数组变量。一个方法只能有一个可变数目参数,并且是最后一个参数。第7页,课件共17页,创作于2023年2月【例11-2】定义数目可变参数的方法,进行求和、找最大值。classMethodC{//方法类publicstaticdoublesum(double...nums)throwsException{ if(nums.length==0){//可变参数长度即参数个数 thrownewException("没有数据、无法求和异常"); }doublesumvalue=0; for(inti=0;i<nums.length;i++){sumvalue+=nums[i];} returnsumvalue;}……("1个数之和:"+MethodC.sum(1));…("2个数之和:"+MethodC.sum(1,2));…("3个数之和:"+MethodC.sum(1,2,3));…("以数组作实参求3个数之和:"+MethodC.sum(newdouble[]{1,2,3}));…第8页,课件共17页,创作于2023年2月【例11-3】编程,定义抽奖方法进行抽奖。//4个参数抽号方法:起始号、终止号、抽取个数、排除号码(可变参数)publicstaticint[]raffleNums(intfrom,intto,intamount,int...exclusion)throwsException{//在类Raffle中定义if((to-from+1)-exclusion.length<amount){ throw…("抽取范围内的数量必须不小于要抽取的个数");}Randomrand=newRandom();int[]nums=newint[amount];for(inti=0;i<amount;i++){whiletag:while(true){//抽取from到to之间不重复随机数intrandNum=rand.nextInt(to-from+1)+from; for(intj=0;j<i;j++){//与已有随机数比较 if(randNum==nums[j]){//如果有重复, continuewhiletag;//则继续while循环(抽数) }} for(intk=0;k<exclusion.length;k++){//比较排除的号码 if(randNum==exclusion[k]){continuewhiletag;}}nums[i]=randNum;//不重复,保存到数组 breakwhiletag;//结束while循环,返回外层for循环}} returnnums;}}第9页,课件共17页,创作于2023年2月续11-3publicstaticvoidmain(String[]args){try{ System.out.println("抽取20到40范围内6个数,排除25和35,结果如下:"); 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,200,8); …}catch(Exceptione){…}}第10页,课件共17页,创作于2023年2月11.4枚举类型声明、定义枚举类型简要语法:enum枚举类型名{枚举常量表}如:enumSeason{Spring,Summer,Autumn,Winter}枚举类型Season有4个枚举常量。使用枚举常量须用枚举类型名作前缀,如Season.Spring输出时只显示枚举常量名,如Spring。枚举类型和枚举常量都是标识符,可用中文起名。如:enum季节{春,夏,秋,冬}于是,枚举常量表示为:季节.春、季节.夏,等等。注意:枚举是特殊的类类型。成员除了枚举常量外,还可包含构造函数、字段和方法。一般语法形式:enum枚举类型名{允许包含参数的枚举常量表;字段;构造函数;方法}第11页,课件共17页,创作于2023年2月【例11-4】编程,定义表示季节的枚举类型,然后输出相关的枚举常量。enumSeason{Spring,Summer,Autumn,Winter}//枚举类型publicclassExample4{//主类publicstaticvoidmain(String[]args){System.out.print("上半年有2季:");Seasonq1=Season.Spring;//枚举变量声明和赋值Seasonq2=Season.Summer;System.out.println(q1+","+q2);System.out.print("上半年季节序号:");System.out.print(q1.ordinal()+","+q2.ordinal());//量序号System.out.println("\n一年4季是:");Seasonquarter;//声明季节枚举类型变量for(inti=0;i<4;i++){quarter=Season.values()[i];//Season[]数组 System.out.print(quarter+"");}}}第12页,课件共17页,创作于2023年2月【例11-5】编程,定义一个含有构造函数、字段和方法的关于奖品的枚举类型。在主类中输出这些奖品的名称、价值和数量。enumAwardType{//奖品枚举类型
手提电脑(5000,1),//奖品名称(价值,数量)
电视机(3000,2),
电冰箱(1800,3),
洗衣机(1200,5),
微波炉(600,10); privateintworth;//价值字段 privateintamount;//数量字段 AwardType(intworth,intamount){//非public构造方法 this.worth=worth;this.amount=amount; } publicintgetWorth(){//获取价值方法 returnthis.worth; } publicintgetAmount(){//获取数量方法 returnthis.amount;}}第13页,课件共17页,创作于2023年2月续例11-5publicclassExample5{//主类 publicstaticvoidmain(String[]args){ System.out.println("所有奖品如下:"); for(AwardTypeaw:AwardType.values()){ System.out.print(()); System.out.print(":价值"+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 20679:2025 EN Ships and marine technology - Marine environment protection - Testing of ship biofouling in-water cleaning systems
- 我的家乡叙事课程设计
- 弦乐小夜曲课程设计
- 中西医执业医师模拟试卷16
- 矿井灌浆设计课程设计
- 站姿坐姿课程设计
- 花艺烘焙课程设计
- 药品验收入门课程设计
- 互联网行业安全管理实践
- 领导班子与教学院校协调计划
- 职业生涯规划班会课教案设计
- 微观经济学(对外经济贸易大学)智慧树知到期末考试答案2024年
- (正式版)HGT 6277-2024 甲醇制烯烃(MTO)级甲醇
- 注射用更昔洛韦的临床疗效研究
- 2023年1月广东省自考00634广告策划试题及答案含解析
- 2024年青海西部机场集团青海机场有限公司招聘笔试参考题库含答案解析
- 中国绿色建筑现状与未来展望
- 河南省洛阳市2023-2024学年高二上学期期末考试英语试题(解析版)
- 超声检查医疗纠纷的防范培训课件
- 采购管理的流程与原则
- 2022-2023学年山东省东营市东营区七年级(上)期末历史试卷(五四学制)(附答案详解)
评论
0/150
提交评论