当前位置: 首页 > news >正文

java专题练习(抢红包)

package 专题练习;import java.util.Random;public class grab_red_packet {/* 需求:直播抽奖,分别由{2,588,888,1000,10000}五个奖金,请用代码模拟抽奖,奖项出现顺序要随机且不重复打印效果:588元的奖金被抽出*///思路://1. 先用数组把奖金定义好//2. 用random方法给出随机数索引//3. 题目告诉长度为5.  随机数范围就是0-4//4. 难点:不能重复, 那就想办法不让随机数重复就好了//总结而言:其实就是一个循环嵌套,外循环来控制输入随机数,内循环来控制是否重复public static void main(String[] args) {//定义奖金数组int[] jiangjin = new int[]{2, 588, 888, 1000, 10000};//定义奖金已经出现数组int[] jiangjinhavebeen = new int[jiangjin.length];//直接调用 答案解出Restart(jiangjinhavebeen,jiangjin);}//抽取随机数的方法public static int Get_suijishu(int[] jiangjin){//就是随机生成一个数字Random r = new Random();int suijishu = r.nextInt(jiangjin.length);return suijishu;}//判断重复 重复返回-1   没重复返回1 (内循环)public static int Pan_duan_chongfu(int[] havebeenjiangjin,int []jiangjin,int suijishu){for (int j = 0; j < havebeenjiangjin.length; j++) {if(havebeenjiangjin[j] == jiangjin[suijishu]) {return -1;}}return 1;}//外循环 (重复抽取随机数)public static void Restart(int[] jiangjinhavebeen,int[] jiangjin){for (int i = 0; i < jiangjinhavebeen.length; ) {//先外循环(实现随机数),后内循环(判断是否有重复,如果有重复,外循环次数-1,如果不重复,在外循环读出)//实现随机数(调用生成随机数方法)int suijishu = Get_suijishu(jiangjin);//调用 (判断是否重复方法)if(Pan_duan_chongfu(jiangjinhavebeen,jiangjin,suijishu) == 1){jiangjinhavebeen[i] = jiangjin[suijishu];//如果没有重复,就把当前的已经抽出来的奖金录入到(已经出现过的奖金)的数组里面去System.out.println(jiangjinhavebeen[i] + "元的奖金被抽出");}else{System.out.println("随机数为:" + suijishu + "的奖品已经被抽出,请重新抽取");i++; //如果重复,那么外循环的次数就不能增加,应该保持原次数(这里i--,循环条件里由i++,两者相加i刚好还是等于i)}} }//其实这个题目也可以这样理解,就是把原数组打乱(用随机数)最后输出,个人觉得不如上面的代码给到用户信息及时和明确public static void mode_two(int[] jiangjin){for (int i = 0; i < jiangjin.length; i++) {int suijishu = Get_suijishu(jiangjin); //获取随机数int temp = jiangjin[i];jiangjin[i] = jiangjin[suijishu];jiangjin[suijishu] = temp;  }  //这样就打乱顺序了, 这样的算法也让博主很受启发.//遍历for (int i = 0; i < jiangjin.length; i++) {System.out.print(jiangjin[i]);}}
}
http://www.lryc.cn/news/171717.html

相关文章:

  • AVR 单片机 调试环境 JTAG MKII
  • C++ - AVL树实现(下篇)- 调试小技巧
  • Mybatis懒加载
  • DSOX3012A是德科技keysight DSOX3012A示波器
  • 基于网络表示学习的 新闻推荐算法研究与系统实现
  • <Altium Designer> 将.DSN文件导入并转换成SchDoc文件
  • 视频定格合璧,批量剪辑轻松插入图片
  • 【Tensorflow 2.12 电影推荐项目搭建】
  • python+opencv特征匹配算法
  • android Compose 实现 webView
  • 算法基础-数学知识-欧拉函数、快速幂、扩展欧几里德、中国剩余定理
  • ElasticSearch系列-索引原理与数据读写流程详解
  • 【码银送书第七期】七本考研书籍
  • docker容器的设置本地时间(/etc/localtime)和本地时区(/etc/timezone)
  • 侯捷老师C++课程:内存管理
  • A股风格因子看板 (2023.09 第05期)
  • 修炼离线:(二)sqoop插入hbase 脚本(增量)
  • 跨平台编程开发工具Xojo 2023 Release mac中文版功能介绍
  • OpenCV Series : Target Box Outline Border
  • 【AD】【规则设置】设置四层板
  • Linux安装JDK1.8并配置环境变量
  • 面向面试知识--MySQL数据库与索引
  • portainer + portainer/agent
  • C# 截取字符串
  • FOXBORO FBM233 P0926GX控制脉冲模块
  • MySQL性能优化——MYSQL执行流程
  • Django:四、Djiango如何连接使用MySQL数据库
  • LeetCode 热题 100(八):贪心。121. 买卖股票的最佳时机、45. 跳跃游戏 II
  • 第N个数字
  • 【适用于电力系统和音频系统】计算信号的总谐波失真 (THD)(Matlab代码实现)