java抽奖功能设计需求及代码实现

Java抽奖功能设计需求:

  1. 用户可以在一定数量的奖项中随机抽取一个奖项。
  2. 抽奖过程需要保证公平、随机和不重复,即每个奖项只能被抽取一次。
  3. 用户可以在抽奖前设置抽奖规则,如抽取次数、奖项数量、奖项名称等。
  4. 抽奖过程需要记录并展示中奖名单,包括中奖用户和奖项名称。 Java抽奖功能代码实现:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class LuckyDraw {
    private List<String> prizeList; // 奖项列表
    private List<String> nameList;  // 姓名列表
    private int drawNum;            // 抽奖次数
    public LuckyDraw() {
        prizeList = new ArrayList<>();
        nameList = new ArrayList<>();
    }
    // 设置奖项列表
    public void setPrizeList(List<String> prizeList) {
        this.prizeList = prizeList;
    }
    // 设置姓名列表
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }
    // 设置抽奖次数
    public void setDrawNum(int drawNum) {
        this.drawNum = drawNum;
    }
    // 抽奖
    public void draw() {
        Random random = new Random();
        List<String> resultList = new ArrayList<>();
        // 每次抽奖从名单中随机选取一个人,并从奖项列表中删除已中奖的奖项
        for (int i = 0; i < drawNum; i++) {
            int index = random.nextInt(nameList.size());
            String name = nameList.get(index);
            int prizeIndex = random.nextInt(prizeList.size());
            String prizeName = prizeList.get(prizeIndex);
            nameList.remove(index);
            prizeList.remove(prizeIndex);
            resultList.add(name + " 中了 " + prizeName);
        }
        // 输出中奖名单
        System.out.println("\n中奖名单:");
        for (String result : resultList) {
            System.out.println(result);
        }
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        LuckyDraw luckyDraw = new LuckyDraw();
        // 设置奖项列表
        List<String> prizeList = new ArrayList<>();
        prizeList.add("一等奖");
        prizeList.add("二等奖");
        prizeList.add("三等奖");
        luckyDraw.setPrizeList(prizeList);
        // 设置姓名列表
        List<String> nameList = new ArrayList<>();
        nameList.add("张三");
        nameList.add("李四");
        nameList.add("王五");
        nameList.add("赵六");
        nameList.add("钱七");
        luckyDraw.setNameList(nameList);
        // 设置抽奖次数
        System.out.print("请输入抽奖次数:");
        int drawNum = scanner.nextInt();
        luckyDraw.setDrawNum(drawNum);
        // 开始抽奖
        luckyDraw.draw();
    }
}

以上代码实现了一个简单的Java抽奖功能,包括了设置奖项列表、姓名列表和抽奖次数等基本功能,可以通过运行main函数来进行抽奖操作。