抽奖软件
        a、通过键盘录入抽奖人姓名,多个抽奖人用“|”号支解。输入完成后,
                控制台打印抽奖人姓名,并提醒YES OR NO来示意确认。一旦确
                认,自动为抽奖人分配ID,最先抽奖.(若是泛起重名,则以ID为准)
        b、奖品存放在某个聚集中。
        c、1等奖 1个   2等奖 3个   3等奖  4个。
        d、每次抽奖均打印姓名,然后键盘输入next最先第二次抽奖。若是奖品已经
                抽完,则宣布中奖汇总。
        不再提醒next
        1.初始化抽奖人的姓名
        2.初始化奖品的信息
        接纳面向工具编程头脑  拆跟代码 --》把以上两大功效放进工具类
/**
 * 界说一个中奖人
 */
public class LuckDog {
    private Integer id;//中奖人id
    private String name;//中奖人姓名

    public LuckDog(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "LuckDog{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public LuckDog() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

**
 * 界说一个类 奖品类
 */
public class Prize {
    private String name;//奖品的名称
    private String level;////
    private Integer count;//奖品的数目

    @Override
    public String toString() {
        return "Prize{" +
                "name='" + name + '\'' +
                ", level='" + level + '\'' +
                ", count=" + count +
                '}';
    }

    public Prize(String name, String level, Integer count) {
        this.name = name;
        this.level = level;
        this.count = count;
    }

    public Prize() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }
}

/**
 * 界说一个中奖效果
 */
public class Result {
    private Integer id;//id
    private String username;//中奖人姓名
    private String prizeName;//中奖人奖品

    @Override
    public String toString() {
        return "Result{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", prizeName='" + prizeName + '\'' +
                '}';
    }

    public Result() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPrizeName() {
        return prizeName;
    }

    public void setPrizeName(String prizeName) {
        this.prizeName = prizeName;
    }

    public Result(Integer id, String username, String prizeName) {
        this.id = id;
        this.username = username;
        this.prizeName = prizeName;
    }
}

/**
 * 界说一个工具类
 * 完成两大功效
 * 1.初始化抽奖人的信息
 * 2.初始化奖品的信息
 */
public class ToolsClass {

    //需要容器 初始化抽奖人的初始容量
    static ArrayList<LuckDog> list = new ArrayList<>();

    //界说一个静态方式 初始化抽奖人的信息
    public static ArrayList<LuckDog> initperson() {
        //从控制台中获取
        System.out.println("请介入抽奖人的信息,若是有多个,中心用|离隔");
        Scanner sc = new Scanner(System.in);
        String strs = sc.nextLine();//抽奖人信息

        //split(String patter) 拆分字符串为字符数组
        //为空校验
        if (strs != null && !strs.equals("") && !strs.equals("null")) {
            //解释 数据是平安的
            String[] persons = strs.split("\\|");//  \\拆分|
            //循环遍历 persons   长度确定
            for (int i = 0; i < persons.length; i++) {
                //往list容器内里添加抽奖人数据
                list.add(new LuckDog((i + 1), persons[i]));//LuckDog 存储类型工具
            }
        } else {
            //若是前面的信息不合法    递归
            initperson();
        }

        //遍历list容器
        for (int i = 0; i < list.size(); i++) {
            System.out.print(" "+ list.get(i).getName()+" ");
        }

        //把效果返回给程序
        return list;
    }

    //2.初始化奖品信息
    public static ArrayList<Prize> initPrize(){
        //组织一个空的奖品容器
        ArrayList<Prize> list =new ArrayList<>();
        //存储奖品 Prize类工具
        list.add(new Prize("IPhone12","一等奖",1));
        list.add(new Prize("华为P40","二等奖",3));
        list.add(new Prize("水杯","三等奖",4));

        return list;
    }
}

    /*      
            测试
    */
public static void main(String[] args) {
        //直接挪用ToolClass类中的initperson()方式
        ArrayList<LuckDog> ldalist = ToolsClass.initperson();
//        for (int i = 0; i < initperson.size(); i++) {
//            System.out.println(initperson.get(i));
//        }
        //直接直接挪用ToolClass类中的initPrize()方式
        ArrayList<Prize> prize = ToolsClass.initPrize();
//        for (int i = 0; i < prize.size(); i++) {
//            System.out.println(prizes.get(i));
//        }
        //构建一个扫描仪 工具
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入《YES NO》");
        String str = sc.nextLine();
        //忽略大小写
        if (("NO").equalsIgnoreCase(str)) {
            //
            System.out.println("此次抽奖失败!");
            return;//程序竣事
        } else if (!("YES").equalsIgnoreCase(str)) {
            System.out.println("输入的数据不符合要求!");
            return;//程序竣事
        } else {
            //程序最先抽奖
            //先构建效果容器
            ArrayList<Result> results = new ArrayList<>();
            //循环 循环的次数  奖品的总数是8
            while (ldalist.size() > 0 && prize.size() > 0) {//循环竣事的条件
                //最先抽奖
                int index = (int) (Math.random() * ldalist.size());
                //凭据索引获取对应的抽奖人
                LuckDog luckDog = ldalist.get(index);//抽奖人
                //奖品  倒着抽   三等奖
                Prize prize1 = prize.get(prize.size() - 1);
                //拼接中奖效果
                results.add(new Result(luckDog.getId(), luckDog.getName(), prize1.getName()));
                //奖品的个数减一   若是该奖品的个数此时为1 应该把该奖删除掉
                if (prize1.getCount() == 1) {
                    //删除对应的奖品
                    prize.remove(prize1);
                } else {
                    //奖品个数减一
                    prize1.setCount(prize1.getCount() - 1);
                }
                //删除上一轮中奖人的信息
                ldalist.remove(index);//凭据索引删除,直接删除工具
                //输出中奖人的信息
                System.out.println("本次中奖的人是" + luckDog.getName() + ",中奖人的id是" + luckDog.getId() + ",奖品为" + prize1.getName() + ",中奖品级" + prize1.getLevel());
                //再次判断 人数和奖品数

                if (prize.size() > 0 && ldalist.size() > 0) {
                    System.out.println("请输入next开启下一轮抽奖:");
                    String next = sc.next();
                    while (!"next".equalsIgnoreCase(next)) {
                        System.out.println("请输入next开启下一轮抽奖!");
                        //重复判读输入的next是否为next的内容
                        next = sc.next();
                    }
                }
            }
            //抽奖竣事
            System.out.println("---------------------------");
            //展示抽奖汇总
            System.out.println("中奖信息效果为:");
            for (int i = 0; i < results.size(); i++) {
                System.out.println("ID:"+results.get(i).getId() + "\t\t姓名:" + results.get(i).getUsername() + "\t\t奖品名称" + results.get(i).getPrizeName());
            }

        }

    }