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();
}
}
JAVA 抽奖后台代码
最新推荐文章于 2024-01-11 17:27:25 发布