HashTable类

在这里插入图片描述

以下是一个基本的抽奖程序示例,使用了RandomHashtable: ```java import java.util.*; public class Lottery { public static void main(String[] args) { Hashtable<String, String> students = new Hashtable<String, String>(); // 建立学号和姓名对应的Hashtable students.put("001", "张三"); students.put("002", "李四"); students.put("003", "王五"); students.put("004", "赵六"); students.put("005", "钱七"); students.put("006", "孙八"); students.put("007", "周九"); students.put("008", "吴十"); ArrayList<String> firstPrize = new ArrayList<String>(); // 存放一等奖的学号 ArrayList<String> secondPrize = new ArrayList<String>(); // 存放二等奖的学号 ArrayList<String> thirdPrize = new ArrayList<String>(); // 存放三等奖的学号 Random rand = new Random(); // 建立随机数生成器 // 抽取一等奖 int firstIndex = rand.nextInt(students.size()); // 生成一个随机数作为数组下标 firstPrize.add((String)students.keySet().toArray()[firstIndex]); // 将该下标对应的学号加入一等奖列表 // 抽取二等奖 int secondIndex1 = rand.nextInt(students.size()); int secondIndex2 = rand.nextInt(students.size()); while (secondIndex2 == secondIndex1) { // 确保两个随机数不相同 secondIndex2 = rand.nextInt(students.size()); } secondPrize.add((String)students.keySet().toArray()[secondIndex1]); secondPrize.add((String)students.keySet().toArray()[secondIndex2]); // 抽取三等奖 for (int i = 0; i < 3; i++) { int thirdIndex = rand.nextInt(students.size()); while (thirdPrize.contains((String)students.keySet().toArray()[thirdIndex])) { // 确保抽到的学号不重复 thirdIndex = rand.nextInt(students.size()); } thirdPrize.add((String)students.keySet().toArray()[thirdIndex]); } // 输出中奖名单 System.out.println("一等奖:"); System.out.println(students.get(firstPrize.get(0))); System.out.println("二等奖:"); System.out.println(students.get(secondPrize.get(0))); System.out.println(students.get(secondPrize.get(1))); System.out.println("三等奖:"); System.out.println(students.get(thirdPrize.get(0))); System.out.println(students.get(thirdPrize.get(1))); System.out.println(students.get(thirdPrize.get(2))); } } ``` 这个程序使用了Hashtable来建立学号和姓名的对应关系,使用了三个ArrayList来存放不同等级的中奖号码,使用了Random来生成随机数,从而实现了抽奖的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值