用JAVA实现:利用Random类和Hashtable类。要求做一个抽奖的程序,从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖,以学号来选,最后在用学号和人名对应上,输出中奖的同学的姓名。同时要求奖项和奖品进行匹配。
时间: 2023-06-16 08:08:20 浏览: 79
以下是用Java实现的抽奖程序,其中使用了Random类和Hashtable类来实现:
```java
import java.util.*;
public class Lottery {
public static void main(String[] args) {
Hashtable<String, String> students = new Hashtable<String, String>();
students.put("20190101", "张三");
students.put("20190102", "李四");
students.put("20190103", "王五");
students.put("20190104", "赵六");
students.put("20190105", "刘七");
students.put("20190106", "陈八");
students.put("20190107", "周九");
students.put("20190108", "吴十");
List<String> firstPrize = new ArrayList<String>();
List<String> secondPrize = new ArrayList<String>();
List<String> thirdPrize = new ArrayList<String>();
Random random = new Random();
Set<String> keys = students.keySet();
String[] keysArray = keys.toArray(new String[keys.size()]);
// 抽取一等奖
String firstPrizeKey = keysArray[random.nextInt(keys.size())];
firstPrize.add(firstPrizeKey);
// 抽取二等奖
while (secondPrize.size() < 2) {
String secondPrizeKey = keysArray[random.nextInt(keys.size())];
if (!firstPrize.contains(secondPrizeKey) && !secondPrize.contains(secondPrizeKey)) {
secondPrize.add(secondPrizeKey);
}
}
// 抽取三等奖
while (thirdPrize.size() < 3) {
String thirdPrizeKey = keysArray[random.nextInt(keys.size())];
if (!firstPrize.contains(thirdPrizeKey) && !secondPrize.contains(thirdPrizeKey) && !thirdPrize.contains(thirdPrizeKey)) {
thirdPrize.add(thirdPrizeKey);
}
}
// 输出中奖名单
System.out.println("一等奖:");
for (String key : firstPrize) {
System.out.println(students.get(key));
}
System.out.println("二等奖:");
for (String key : secondPrize) {
System.out.println(students.get(key));
}
System.out.println("三等奖:");
for (String key : thirdPrize) {
System.out.println(students.get(key));
}
}
}
```
程序中,首先定义一个Hashtable对象`students`来存储学号和姓名的对应关系。然后定义三个ArrayList对象`firstPrize`、`secondPrize`和`thirdPrize`来存储中奖学生的学号。接着创建一个Random对象`random`,用于随机抽取学生。使用Hashtable的keySet()方法获取所有学号,然后将其转换成数组`keysArray`,方便随机抽取。接着进行抽奖,分别抽取一等奖、二等奖和三等奖。抽取时,用一个while循环,随机抽取学号,然后判断该学号是否已经中过奖,如果没有中过,则将其加入对应的奖项中。最后根据学号获取对应的姓名,输出中奖名单。
阅读全文