<small>
要求如下:
练习:
通过面向对象概念,完成双色球系统功能。
需求分析:
1、双色球由红球(0133)、蓝球(0116)组成。
2、双色球有两个球池(红球池、蓝球池)组成。
3、随机产生6个红球、1个蓝球。
4、最后排序之后,公布结果。
实现步骤:
1、找对象(特征、行为)
球对象(双色球,篮球,足球)
特征:颜色、号码、大小(没用)、材质(没用).....
**有用的特征
行为:滚(没用)
装球的容器:球池对象
特征:原始球数组、结果球数组、材质(没用)...
行为:创建球池(原始球数组)、开奖(产生结果球)
思考:只有一个球池吗?根据彩票类型而定
根据彩票类型,生成多少个球池,
每个球池对应的原始球数,结果球数
2、编写类(属性、方法)
3、实现业务代码。
球类代码
public class Ball {
private String color;
private int number;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
球池代码
import java.util.Random;
public class BallPond {
private Ball[] balls;
private Ball[] resultBalls;
public Ball[] getBalls() {
return balls;
}
//生成原始球池
public void setBalls(String color) {
Ball[] balls = null;
if(color.equals("red")){//生成红球池
Ball[] redBalls = new Ball[33];
for(int i=1;i<=33;i++){
Ball ball = new Ball();
ball.setColor("red");
ball.setNumber(i);
redBalls[i-1] = ball;
}
balls = redBalls;
}else{//生成蓝球池
Ball[] blueBalls = new Ball[16];
for(int i=1;i<=16;i++){
Ball ball = new Ball();
ball.setColor("blue");
ball.setNumber(i);
blueBalls[i-1] = ball;
}
balls = blueBalls;
}
this.balls = balls;
}
public Ball[] getResultBalls() {
return resultBalls;
}
//生成结果球池
public void setResultBalls() {
Ball[] resultBalls = null;
Random r = new Random();
if(("red").equals(this.balls[0].getColor())){//取红球6个
Ball[] resultRedBalls = new Ball[6];
int[] nums = new int[6];
for(int i=0;i<6;i++){
int n = r.nextInt(33)+1;
int flag = true;
for(int j=0;j<6;j++){
if(n==nums[j]){
flag = false;
}
}
if(flag){
nums[i]=n;
}
}
for(int k=0;k<6;k++){
int tip = nums[k];
resultRedBalls[k] = this.balls[tip];
}
resultBalls = resultRedBalls;
}else{//取蓝球1个
Ball[] resultBlueBalls = new Ball[1];
int n = r.nextInt(16)+1;
resultBlueBalls[0] = this.balls[n];
resultBalls = resultBlueBalls;
}
this.resultBalls = resultBalls;
}
}
测试代码
public class DoubleColorBall {
public static void main(String[] args) {
//红球池
BallPond redBalls = new BallPond();
//蓝球池
BallPond blueBalls = new BallPond();
//初始化球池
redBalls.setBalls("red");
blueBalls.setBalls("blue");
//抽奖
redBalls.setResultBalls();
blueBalls.setResultBalls();
//输出获奖球号
System.out.println("红球:");
for(int i=0;i<6;i++){
System.out.print(redBalls.getResultBalls()[i].getNumber()+" ");
}
System.out.println("\n蓝球:");
System.out.print(blueBalls.getResultBalls()[0].getNumber());
}
}