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

要求

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() {

            @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();
    }

}

你可能感兴趣的:(Java)