java基础 2练习题

package Day0504;


/**
 * 球(双色球摇奖用的数字球)
 * 
 * @author fengqili
 * 
 */
public class Ball {
    private int number;
    private boolean used;

    /**
     * 构造器
     * 
     * @param number球得号码
     */

    public Ball(int number) {
        this.number = number;
        this.used = false;
    }

    /**
     * used属性的访问器
     * 
     * @return 如果球被使用过返回true否则放回false
     */
    public boolean isUsed() {
        return used;

    }

    /**
     * used属性的修改器
     * 
     * @param used
     *            true表示被使用过false表示球没有被使用过
     */
    public void setUsed(boolean used) {
        this.used = used;
    }

    /**
     * number属性的访问器
     * 
     * @return 球的号码
     */
    public int getNumber() {
        return number;
    }

    /**
     * 获得字符串形式的球的号码
     * 
     * @return 字符串形式的号码
     */
    public String getNumStr() {
        return number < 10 ? "0" + number : "" + number;
    }

}
package Day0504;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 双色球摇号机
 * 
 * @author fqngqili
 * 
 */

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);
        }
        for (int i = 0; i < blueBalls.length; i++) {
            blueBalls[i] = new Ball(i + 1);
        }
    }

    public Ball getBlueBall() {
        int randomIndex = (int) (Math.random() * blueBalls.length);
        return blueBalls[randomIndex];
    }

    /**
     * 
     * @return 装红色球的数组
     */
    public Ball[] getRedBalls() {
        Ball[] balls = new Ball[6];
        for (int i = 0; i < balls.length; i++) {
            Ball temBall = null;
            do {
                int randomIndex = (int) (Math.random() * redBalls.length);
                temBall = redBalls[randomIndex];
            } while (temBall.isUsed());
            balls[i] = temBall;
            temBall.setUsed(true);
        }
        Arrays.sort(balls, new Comparator<Ball>() {

            public int compare(Ball o1, Ball o2) {

                return o1.getNumber() - o2.getNumber();

            }
        });

        return balls;
    }

    /**
     * 生成随机号码
     * 
     * @return 随机号码的字符串
     */
    public String generateRandomNumber() {
        this.load();
        Ball[] rBalls = this.getRedBalls();
        Ball bBall = this.getBlueBall();
        String str = "";
        for (int i = 0; i < rBalls.length; i++) {
            str += rBalls[i].getNumStr() + " ";
        }
        str += "|";
        str += bBall.getNumStr();
        return str;
    }

}
package Day0504;

import java.util.Scanner;

public class Teso1 {
    public static void main(String[] args) {
        LotteryMachine lm = new LotteryMachine();

        Scanner sc = new Scanner(System.in);
        System.out.print("机选几注: ");
        int n = sc.nextInt();
        for (int i = 1; i <= n; i++) {
            System.out.println(lm.generateRandomNumber());
        }
        sc.close();
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值