栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现抽奖幸运儿

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;

public class ComparatorImpl implements Comparator> {
    @Override
    public int compare(Map.Entry o1, Map.Entry o2) {
        int result = o1.getValue()-o2.getValue();
        return result;
    }
}

测试方法,代码如下:

 public static void test2(){
        String[] namesArray = {"王小刚","李思思","杨倩倩","李大勇","姚期名","陶冰冰"};
        int length = namesArray.length;
        HashMap 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> entrySet = hashMap.entrySet();
        Iterator> iterator = entrySet.iterator();
        while(iterator.hasNext()){
            Map.Entry entry = iterator.next();
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"被选中"+value+"次");
        }
        System.out.println("------------------------");
        //排序前对EntrySet进行遍历
        List> list = new ArrayList<>(entrySet);
        for (int i = 0; i < list.size(); i++) {
            Map.Entry 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 entry = list.get(i);
            System.out.println(entry);
        }
        System.out.println("------------------------");
        // 获取出现次数最多的名字
        int size = list.size();
        Map.Entry entry = list.get(size - 1);
        String name = entry.getKey();
        System.out.println(name);
    }

测试结果:

第三版

要求如下:

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

核心代码:

略

第四版

要求如下:

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

核心代码:

略

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号