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("抽取红包的活动结束");    }
}}
相关推荐
陌小呆^O^12 分钟前
Cmakelist.txt之win-c-udp-client
c语言·开发语言·udp
儿时可乖了20 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol22 分钟前
java基础概念37:正则表达式2-爬虫
java
I_Am_Me_27 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
重生之我是数学王子37 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
xmh-sxh-131438 分钟前
jdk各个版本介绍
java
Ai 编码助手39 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z43 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript