Java实现抽奖幸运儿

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现抽奖幸运儿相关的知识,希望对你有一定的参考价值。


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

背景概述

在抽奖、点名、拆盲盒时我们都需要随机实现某些功能。所以,我们可借助于Java中的随机数来进行相应模块的开发。

第一版

要求如下:

  • 1、数组中存放名字
  • 2、随机从数组中选择1个名字

核心代码:

    public static void test1()
        String[] namesArray = "王小刚","李思思","杨倩倩","李大勇","姚期名","陶冰冰";
        int length = namesArray.length;
        // 进行1次随机选择
        Random random = new Random();
        int number = random.nextInt(length);
        String name = namesArray[number];
        System.out.println("被选中的是:"+name);
    

测试结果:

第二版

要求如下:

  • 1、数组中存放名字
  • 2、随机从数组中选择10个名字
  • 3、请输出出现次数最多的名字

核心代码:

ComparatorImpl类,代码如下:

import java.util.Comparator;
import java.util.Map;
/**
 * 本文作者:谷哥的小弟
 * 博客地址:http://blog.csdn.net/lfdfhl
 */
public class ComparatorImpl implements Comparator<Map.Entry<String, Integer>> 
    @Override
    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) 
        int result = o1.getValue()-o2.getValue();
        return result;
    

测试方法,代码如下:

 public static void test2()
        String[] namesArray = "王小刚","李思思","杨倩倩","李大勇","姚期名","陶冰冰";
        int length = namesArray.length;
        HashMap<String,Integer> hashMap = new HashMap<>();
        // 随机进行10次选择
        for (int i=0;i<10;i++)
            Random random = new Random();
            int number = random.nextInt(length);
            String name = namesArray[number];
            System.out.println("被选中的是:"+name);
            Integer counter = hashMap.get(name);
            if(counter==null)
                hashMap.put(name,1);
            else
                hashMap.put(name,counter+1);
            
        
        System.out.println("------------------------");
        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = entrySet.iterator();
        while(iterator.hasNext())
            Map.Entry<String, Integer> entry = iterator.next();
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"被选中"+value+"次");
        
        System.out.println("------------------------");
        //排序前对EntrySet进行遍历
        List<Map.Entry<String, Integer>> list = new ArrayList<>(entrySet);
        for (int i = 0; i < list.size(); i++) 
            Map.Entry<String, Integer> entry = list.get(i);
            System.out.println(entry);
        
        System.out.println("------------------------");
        // 利用comparator依据Value对EntrySet进行排序
        ComparatorImpl comparator = new ComparatorImpl();
        Collections.sort(list, comparator);
        //排序后对EntrySet进行遍历
        for (int i = 0; i < list.size(); i++) 
            Map.Entry<String, Integer> entry = list.get(i);
            System.out.println(entry);
        
        System.out.println("------------------------");
        // 获取出现次数最多的名字
        int size = list.size();
        Map.Entry<String, Integer> entry = list.get(size - 1);
        String name = entry.getKey();
        System.out.println(name);
    

测试结果:

第三版

要求如下:

  • 1、在本地txt文件中存放多个名字
  • 2、请随机选择10个名字
  • 3、请输出出现次数最多的名字

核心代码:

第四版

要求如下:

  • 1、在本地Excel文件中存放多个名字
  • 2、请随机选择10个名字
  • 3、请输出出现次数最多的名字

核心代码:

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于Java实现抽奖幸运儿的主要内容,如果未能解决你的问题,请参考以下文章

Java抽奖

Java抽奖

Java 幸运抽奖项目

jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现

幸运大转盘-jQuery+PHP实现的抽奖程序

原生js轮盘抽奖实例分析(幸运大转盘抽奖)