Java面向对象实例(双色球摇号篇)

来源:互联网 发布:java身份证识别 编辑:程序博客网 时间:2024/05/16 07:29

要求

1.随机生成几组双色球号码

2.前五个为红号,后一个为蓝号,用”|”隔开

3.用面向对象实现

定义一个类命名为Ball,其中两个属性:a.球的数字
                b.球是否已经出现过。
方法: a.球的geters方法
   b.球的是否出现的的geters和setters方法
   c.以字符串打印球这个对象的方法(小于10补零,大于10不作操作)

package com.lovoinfo;/** * 球(双色球摇奖用的数字球) *  * @author Administrator * */public class Ball {    private int number;// 摇出的球的数字    private boolean isUsed;// 球是否被用过    /**     * 构造器     *      * @param number球的号码     */    public Ball(int number) {        this.number = number;    }    /**     * number属性访问器     *      * @return number球的号码     */    public int getNumber() {        return number;    }    /**     * used属性访问器     *      * @return 如果球被使用过返回true否则返回false     */    public boolean isUsed() {        return isUsed;    }    /**     * used属性修改器     *      * @param isUsed     *            true表示球被使用过false表示球没有被使用过     */    public void setUsed(boolean isUsed) {        this.isUsed = isUsed;    }    /**     * 如果球的数字小于十,在数字前面补零     * @return <10返回0+number,大于十返回number     */    public String getNumStr() {        return number < 10 ? "0" + number : "" + number;//条件运算    }}

定义第二个类:
方法:a.球的装载load()
b.摇出蓝色球
c.摇出红色球(保证一个数字只出现一次)
d.排序
f.产生随机号

package com.lovoinfo;import java.util.Arrays;import java.util.Comparator;/** * 双色球摇号机 *  * @author Administrator * */public class LotteryMachine {    private Ball[] redBalls = new Ball[33];    private Ball[] blueBalls = new Ball[16];    /**     * 装入红色球和蓝色球     */    public void load() {        for (int i = 0; i < redBalls.length; i++) {            redBalls[i] = new Ball(i + 1);// 装好33个红球        }        for (int i = 0; i < blueBalls.length; i++) {            blueBalls[i] = new Ball(i + 1);// 装好16个蓝色球        }    }    /**     * 摇出一个蓝色球     *      * @return 球的对象     */    public Ball getBlueBall() {        int randomIndex = (int) (Math.random() * blueBalls.length);        return blueBalls[randomIndex];    }    /**     * 摇出6个红球     *      * @return 装红球的数组     */    public Ball[] getRedBalls() {        Ball[] balls = new Ball[6];        for (int i = 0; i < balls.length; i++) {            Ball tempBall = null;            do {                int randomIndex = (int) (Math.random() * redBalls.length);                tempBall = redBalls[randomIndex];// 把球放在数组里面装起来            } while (tempBall.isUsed());// 确保选的tempBall不是重复的数字,否则重选            balls[i] = tempBall;            tempBall.setUsed(true);        }        Arrays.sort(balls, new Comparator<Ball>() {            @Override            public int compare(Ball o1, Ball o2) {                return o1.getNumber() - o2.getNumber();            }        });        return balls;    }    /**     * 生成随机号码     *      * @return 随机号码的字符串     */    public String generrateRandomNumber() {        load();        Ball[] rBalls = this.getRedBalls();        Ball bBalls = this.getBlueBall();        String str = "";        for (int i = 0; i < rBalls.length; i++) {            str += rBalls[i].getNumStr() + " ";        }        str += "|";        str += bBalls.getNumStr();        return str;    }}

命名第三个类:测试类:在控制台输入机选注数,输出机选的注数

package com.lovoinfo;import java.util.Scanner;public class Test01 {    public static void main(String[] args) {        LotteryMachine lm=new LotteryMachine();        Scanner sc = new Scanner(System.in);        System.out.println("机选几注:");        int n=sc.nextInt();        for(int i=0;i<=n;i++){            System.out.println(lm.generrateRandomNumber());        }        sc.close();    }}
0 0
原创粉丝点击