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("抽取红包的活动结束");    }
}}
相关推荐
袁慎建@ThoughtWorks1 分钟前
ThreadLocal那些事儿
java·jdk·多线程·threadlocal
半夏知半秋4 分钟前
kcp学习-skynet中的kcp绑定
开发语言·笔记·后端·学习
专注于大数据技术栈10 分钟前
java学习--HashSet
java·学习·哈希算法
菜鸟233号11 分钟前
力扣518 零钱兑换II java实现
java·数据结构·算法·leetcode·动态规划
扶苏-su12 分钟前
Java--标准输入输出流
java·开发语言
szm022528 分钟前
Spring
java·后端·spring
奋斗的小青年!!37 分钟前
Flutter跨平台开发OpenHarmony应用:个人中心实现
开发语言·前端·flutter·harmonyos·鸿蒙
进阶的小名39 分钟前
[超轻量级延时队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个延时MQ(自定义注解方式)
java·数据库·spring boot·redis·缓存·消息队列·个人开发
短剑重铸之日41 分钟前
《7天学会Redis》Day 6 - 内存&性能调优
java·数据库·redis·缓存·7天学会redis
石头wang42 分钟前
jmeter java.lang.OutOfMemoryError: Java heap space 修改内存大小,指定自己的JDK
java·开发语言·jmeter