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("抽取红包的活动结束");    }
}}
相关推荐
硬件人某某某6 分钟前
Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)
java·开发语言·社区团购小程序·团购小程序·java社区团购小程序
程序员徐师兄7 分钟前
Java 基于 SpringBoot 的校园外卖点餐平台微信小程序(附源码,部署,文档)
java·spring boot·微信小程序·校园外卖点餐·外卖点餐小程序·校园外卖点餐小程序
kucupung19 分钟前
【C++基础】多线程并发场景下的同步方法
开发语言·c++
chengpei14724 分钟前
chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确
java·前端·chrome·spring boot·json
Quantum&Coder24 分钟前
Objective-C语言的计算机基础
开发语言·后端·golang
五味香26 分钟前
Java学习,List 元素替换
android·java·开发语言·python·学习·golang·kotlin
Joeysoda29 分钟前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
迂幵myself29 分钟前
14-6-1C++的list
开发语言·c++·list
扫地僧00932 分钟前
(Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计
java·开发语言
天乐敲代码33 分钟前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法