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

JAVA思维提升案例5

抢红包案例:

要求:

一个大V直播时发起了抢红包活动,分别有:9、666、188、520、99999五个红包。 请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序):

方法一


import java.util.Random;
import java.util.Scanner;

public class Test6 {
    //完成抢红包案例
    //方法1:每次抽奖都从数组中,随机找出一个金额,如果该金额不是0,就输出该金额,然后用0替换该位置处的金额; 如果该位置就是0,则重复上一步操作!
    public static void main(String[] args) {
        int arr[] = {9, 666, 188, 520, 9999};//定义红包
        hb(arr);

    }

    public static void hb(int[] numbers) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();//产生随机数来遍历数组不同的下标
        //需要抽五次红包,所以设置五次循环
        for (int i = 1; i <= 5; i++) {
            System.out.println("请按任意键完成抽红包");
            String q = sc.next();
            while (true) {//设置以个死循环一直打印下面直到找到不为0的,一直重复这种动作
                int n = rand.nextInt(numbers.length);
                int money = numbers[n];
                if (numbers[n] != 0) {
                    System.out.println("恭喜你抽中了" + money + "元红包");
                    numbers[n] = 0;
                    break;
                }
            }
        }
        System.out.println("红包抽完了");
    }
}

方法2:


import java.util.Random;
import java.util.Scanner;

public class Test6法2 {
   //方法二:打乱奖金的顺序,再依次发给粉丝
    public static void main(String[] args) {
        int arr[] = {9, 666, 188, 520, 9999};//定义红包
        test(arr);//调用打乱红包位置的方法
        tiqu(arr);//调用抽取红包的方法
    }
    public static void test(int arr[]) {
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int rand = r.nextInt(arr.length);//产生随机的数,长度是数组的长度
            int temp = arr[i];
            arr[i] = arr[rand];//交换两个位置的值
            arr[rand] = temp;
        }
    }
    public static void tiqu(int arr[]){
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请按任意键完成抽红包");
            String q = sc.next();
            int money = arr[i];
            System.out.println("恭喜您抽到了"+money+"元");
            arr[i] = 0;

            System.out.println("抽取红包的活动结束");    }
}}

 


http://www.kler.cn/news/343532.html

相关文章:

  • C++ osgEarth 多窗口 同步绘制geometry
  • 股指期货的杠杆是怎么体现和使用的?
  • 最新PHP礼品卡回收商城 点卡回收系统源码_附教程
  • 旅游管理系统开发新篇章:SpringBoot技术解析
  • 基于SSM的线上学习网站【附源码】
  • ORM框架简介
  • JVM和GC案例详解
  • 进程同步问题
  • TCP连接的三次握手与四次挥手详解
  • 项目管理系统介绍,核心概念与操作技巧
  • Python3一些常用的SSH连接_paramiko使用
  • 调度算法-先来先服务
  • EtherNet IP网关HT3S-EIS-MDN读取七星华创CS310空气流量计数据应用案例
  • JavaScript 代码行前添加分号
  • 【部署分布式数据库DBMS】
  • 机房空调远程控制-Thingsboard MQTT 接口说明
  • 吐槽kotlin之垃圾设计
  • 用Electron时候碰到的小问题
  • <OS 有关> Docker.Desktop - Unexpected WSL error #14030 不能启动, 问题已经解决 fixed
  • PDFToMarkdown