JAVA 抽奖后台代码

package com.alex.demo.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Lottery {

    // 奖项列表
    private List<Prize> prizeList;

    // 中奖记录列表
    private List<String> winnerList;

    // 随机数生成器
    private Random random;

    public Lottery() {
        prizeList = new ArrayList<>();
        winnerList = new ArrayList<>();
        random = new Random();
    }

    /**
     * 添加奖项
     * @param prize 奖项对象
     */
    public void addPrize(Prize prize) {
        prizeList.add(prize);
    }

    /**
     * 开始抽奖
     * @return 中奖结果
     */
    public String drawLottery() {
        // 如果没有奖项,则返回null
        if (prizeList.isEmpty()) {
            return null;
        }

        // 计算奖项总权重
        int totalWeight = 0;
        for (Prize prize : prizeList) {
            totalWeight += prize.getWeight();
        }

        // 随机生成一个数字作为中奖权重
        int luckyNumber = random.nextInt(totalWeight);

        // 根据中奖权重确定中奖奖项
        int tempWeight = 0;
        for (Prize prize : prizeList) {
            tempWeight += prize.getWeight();
            if (luckyNumber < tempWeight) {
                // 生成中奖号码
                String luckyCode = generateLuckyCode(prize.getType());
                // 添加中奖记录
                winnerList.add(luckyCode);
                // 返回中奖信息
                return "恭喜您获得" + prize.getName() + ",中奖号码是:" + luckyCode;
            }
        }

        // 如果没有中奖,则返回null
        return null;
    }

    /**
     * 生成中奖号码
     * @param type 奖项类型
     * @return 中奖号码
     */
    private String generateLuckyCode(String type) {
        // TODO: 根据奖项类型生成中奖号码

        return "111"+new Random(111).nextInt();
    }

    /**
     * 获取中奖记录列表
     * @return 中奖记录列表
     */
    public List<String> getWinnerList() {
        return winnerList;
    }

    /**
     * 清空中奖记录列表
     */
    public void clearWinnerList() {
        winnerList.clear();
    }

    /**
     * 奖项类
     */
    public static class Prize {
        private String name;    // 奖项名称
        private String type;    // 奖项类型
        private int weight;     // 奖项权重

        public Prize(String name, String type, int weight) {
            this.name = name;
            this.type = type;
            this.weight = weight;
        }

        public String getName() {
            return name;
        }

        public String getType() {
            return type;
        }

        public int getWeight() {
            return weight;
        }
    }

    public static void main(String[] args) {
        // 创建抽奖对象
        Lottery lottery = new Lottery();

// 添加奖项
        lottery.addPrize(new Lottery.Prize("一等奖", "A", 1));
        lottery.addPrize(new Lottery.Prize("二等奖", "B", 2));
        lottery.addPrize(new Lottery.Prize("三等奖", "C", 3));
        lottery.addPrize(new Lottery.Prize("四等奖", "D", 4));
        lottery.addPrize(new Lottery.Prize("五等奖", "E", 5));
        lottery.addPrize(new Lottery.Prize("六等奖", "F", 6));
        lottery.addPrize(new Lottery.Prize("七等奖", "G", 7));
        lottery.addPrize(new Lottery.Prize("八等奖", "H", 8));

        // 开始抽奖
        String result = lottery.drawLottery();
        System.out.println(result);

        // 获取中奖记录列表
        List<String> winnerList = lottery.getWinnerList();
        for (String winner : winnerList) {
            System.out.println(winner);
        }

// 清空中奖记录列表
        lottery.clearWinnerList();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值