一个简单的Java抽奖(兼计数)程序

简介

         这个程序实现起来十分简单,主要利用的是随机函数和枚举。通过多次的随机数抽取并且在相应的枚举值后面计数,统计出抽取次数最多的名字。

      

代码

          创建一个枚举文件NameTable.java,枚举出名单,括号中的是随机数点到名的次数。后面就是计数的功能。

package randomSelect;

enum NameTable {
        //枚举值:8个
	王(0), 周(0), 祝(0), 罗(0), 李(0), 卜(0), 唐(0), 刘(0);
        //计数
	private int count;
        //get方法
	public int getCount() {
		return count;
	}
        //set方法
	public void setCount(int count) {
		this.count = count;
	}
        //构造函数
	private NameTable(int c) {
		c = count;
	}

}

          接下来就是生成随机数,抽取出幸运者。不断地抽取并且计数。

package randomSelect;

import java.util.ArrayList;

public class RandomSelect {
	private static NameTable award;
	static int CompareNum = 0;
	private static NameTable Lucky;
        //设置一个集合,用于存放随机产生的结果
	static ArrayList<NameTable> NameList = new ArrayList<NameTable>();

	public static void main(String[] args) throws InterruptedException {
		int Num, Count = 1;
		System.out.println("Let's starting !");
                //循环生生100个随机数
		for (int i = 0; i < 100; i++) {
			Num = (int) (Math.random() * 8);
                        在NameTable.java中找到对应的坐标0 1 2 3···
			award = NameTable.class.getEnumConstants()[Num];
                        //输出名单,满10个换行
			if (i % 10 == 0)
				System.out.println("\n");
			System.out.print(award + "      ");
			NameList.add(award);
			// Thread.sleep(1000);    //每生成一个名字休息1秒钟
		}
		System.out.println("\n\nThank you !\n\n");
                //计数功能:在名单中搜索与名字相同的个数
		for (int j = 0; j < NameList.size(); j++) {
			for (int z = 0; z < NameList.size(); z++) {
				if (NameList.get(j).equals(NameList.get(z))) {
					NameList.get(j).setCount(Count++);
				}
			}
			Count = 1;
                        //恢复初始计数值,count=1是因为搜索时自身没有算进去,
                        //所以开始时手动设置为1,而不是0
		}
                //输出枚举表单名和参数
		for (NameTable list : NameTable.values()) {
                        //获取幸运者
			if (list.getCount() > CompareNum) {
				CompareNum = list.getCount();
				Lucky = list;
			}
			System.out.println("恭喜     " + list + "    被点名" + list.getCount() + "  次!");
		}
		System.out.println("\n\n今晚的幸运观众是  " + Lucky + "  !");
	}
}

效果

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Larry Chow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值