zoukankan      html  css  js  c++  java
  • 第六次作业(二)

    测试类继承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();
        }
    }

  • 相关阅读:
    蘑菇街2016校园招聘第一个编程题
    杭州天丽笔试题
    2016校园招聘 cvte一面被问到的面试题目
    C#中ArrayList,List,数组的区别
    大白话讲解.NET中挂起线程的Thread.Sleep()方法
    OutLook邮箱获取授权码
    EPIC全速下载游戏加速教程
    远程服务器提示:身份验证错误 要求的函数不受支持解决办法汇总-- Windows远程桌面连接
    华硕主板重装系统以后BIOS设置的启动项就没有了,开机就进BIOS,不进系统
    Windows10访问共享文件夹:此用户无法登录,因为该账户当前已被禁用此用户无法登录,因为该账户当前已被禁用或者直接找不到相应的计算机解决办法
  • 原文地址:https://www.cnblogs.com/lcumin/p/5486169.html
Copyright © 2011-2022 走看看