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、请输出出现次数最多的名字
核心代码:
略
以上是关于Java实现抽奖幸运儿的主要内容,如果未能解决你的问题,请参考以下文章