• 第六次作业(二)


    测试类继承Thread,在控制台模拟了整个抽奖流程,包括抽奖的等待,等等...

    Prize类和Person类设置人数和奖品数,并有相应的构造器。

    防止溢出那里直接用List.size()方法就可以了。。。

    代码如下,其余实现思想在代码中用备注指出:

    package com.cumin;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Random;
    
    public class DrawPrize {
        private static ArrayList<Prize> prizes;
        private static ArrayList<Person> people;
    
        public ArrayList<Prize> dealPrize() {
            if (prizes == null) {
                prizes = new ArrayList<>();
                for(int i=1;i<=Prize.numofprizes;i++){
                    prizes.add(new Prize("奖品", i));
                }
                Collections.shuffle(prizes);
            }
            return prizes;
        }
        public ArrayList<Person> dealPerson() {
            if (people==null) {
                people = new ArrayList<>();
                for(int i=1;i<=Person.numofpeople;i++){
                    people.add(new Person("人物", i));
                }
                Collections.shuffle(people);
    
            }
            return people;
        }
        public static void drawPrize(){
            Random rd = new Random();
            int index1 =rd.nextInt(Prize.numofprizes--); //防止溢出
            Prize prize =prizes.get(index1);
            int index2 =rd.nextInt(Person.numofpeople--);
            Person p =people.get(index2);
            System.out.println("获奖人为:"+p.getName()+" 奖品为:" +prize.getName());
            //参与过后不可抽奖
            prizes.remove(index1);
            people.remove(index2);
            
        }
    }
    package com.cumin;
    
    public class Prize {
        //奖品总数
        public static int numofprizes=100;
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        //设置奖品编号
        public Prize(String name, int i) {
            this.name = name + i + " ";
    
        }
    }
    package com.cumin;
    
    public class Person {
        //抽奖人数
        public static int numofpeople=100;
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        
        public Person(String name, int i) {
            this.name = name + i + " ";
    
        }
    }
    package com.cumin;
    
    public class Test extends Thread{
        //抽奖流程
        public void Draw() throws Exception{
            System.out.println(".....抽奖即将开始,请耐心等待.....");
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //创建人物和奖品
            DrawPrize dp= new DrawPrize();
            dp.dealPrize();
            dp.dealPerson();
            System.out.println(".....抽奖开始.....");
            System.out.println(".....正在紧张的抽奖中.....");
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(".....一等奖有一名.....");
            DrawPrize.drawPrize();
            System.out.println(".....正在紧张的抽奖中.....");
            //抽奖中。。。
            try {
                sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(".....二等奖有五名.....");
            for(int i=0;i<5;i++){
                DrawPrize.drawPrize();
                sleep(500);
            }
            System.out.println(".....正在紧张的抽奖中.....");
            try {
                sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            
            System.out.println(".....三等奖有十名.....");
            for(int i=0;i<10;i++){
                DrawPrize.drawPrize();
                sleep(500);
            }
            System.out.println(".....抽奖结束.....");
        }
        
        public static void main(String args[]) throws Exception{
            new Test().Draw();
        }
    }

  • 相关阅读:
    Mapreduce实例-Top Key
    Mapreduce实例-分组排重(group by distinct)
    storm0.9.0.1升级安装
    mysql配置文件my.cnf详解
    MYSQL管理之主从同步管理
    一个经典实用的iptables shell脚本
    sed实例精解--例说sed完整版
    常用的主机监控Shell脚本
    Python(九)Tornado web 框架
    缓存、队列(Memcached、redis、RabbitMQ)
  • 原文地址:https://www.cnblogs.com/lcumin/p/5486169.html
Copyright © 2020-2023  润新知