JAVA思维提升案例5

抢红包案例:

要求:

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

方法一

java 复制代码
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:

java 复制代码
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("抽取红包的活动结束");    }
}}
相关推荐
全栈Blue2 分钟前
详解代理模式-【静态代理与JDK动态代理】(非常的斯国一)
java·代理模式
易辰君16 分钟前
python爬虫 - 初识爬虫
开发语言·爬虫·python
长天一色24 分钟前
【C语言系统编程】【第三部分:网络编程】3.2 数据传输和协议
c语言·开发语言·网络
customer0828 分钟前
【开源免费】基于SpringBoot+Vue.JS美容院管理系统(JAVA毕业设计)
android·java·vue.js·spring boot·spring cloud·开源
结衣结衣.30 分钟前
Python基础语法1
开发语言·笔记·python·学习·编程·编程语法
风雨「83」35 分钟前
centos已安装python3.7环境,还行单独安装python3.10环境,如何安装,具体步骤
linux·开发语言·python
太自由1 小时前
SpringBoot之Profile的两种使用方式
java·spring boot·后端·profile·springboot多环境配置·profile注解
tiantian17)1 小时前
深入学习并发编程中的 synchronized
java·学习
碳苯1 小时前
【rCore OS 开源操作系统】Rust HashMap应用 知识点及练习题
开发语言·rust·操作系统
hakesashou1 小时前
php与python建站的区别有哪些
开发语言·php