java___boolean型标记双色球

来源:互联网 发布:淘宝客短网址生成器 编辑:程序博客网 时间:2024/06/13 06:27
import java.util.Arrays;
import java.util.Random;


public class Test01 {
/**
* 双色球:共有7个数字
* 红球:6个  每个都不重复,数的范围在1~33
* 蓝球:1个 范围1~16
*/
public static void main(String[] args) {
Random r=new Random();//创建随机数对象r
//1、定义球池:
String balls[]=new String[33];//声明一个长度为33的字符串数组balls
for (int i = 0; i < balls.length; i++) {
if(i<9){
balls[i]="0"+(i+1);//在1~9的前面补零=>01、02、03....将这些字符串赋给数组balls
}else{
balls[i]=""+(i+1);//10~33这些字符串赋给数组balls
}
}
System.out.println(Arrays.toString(balls));//将数组balls直接转换成字符串进行输出

//定义存放红球的数组,还有存放蓝球的变量
String red[] =new String [6];//声明一个长度为6的string数组red红球
String blue;//定义一个String变量blue


boolean [] flags=new boolean[33];
//定义一个布尔值数组,用来标记红球中的球是否已经被抽取过,false表示未被抽中
for (int i = 0; i < flags.length; i++) {
flags[i]=false;
}//boolean数组flags的33个值均为false

//抽取红球
int index;//红球下标变量
for (int i = 0; i < red.length; i++) {
do{
index=r.nextInt(33);//index=3  抽取了04号球
}while(flags[index]);
//=>>>while(false)判定失败,执行下一语句,while(true)判定成功,进入循环,重新抽取随机数
           //boolean变量,true在0,1判定中,判定成功,进入循环;false则为判定失败,不进入循环。
red[i]=balls[index];//将balls[index]的值赋给抽到的红球
flags[index]=true;//改标记:如果对应的数被抽中就做标记为true,下次被抽取到,进入循环,重新抽取
}
Arrays.sort(red);//对抽取到的红球数组red进行升序排列
blue=balls[r.nextInt(16)];
//抽取蓝球,从[0,16)之间抽取随机数,balls[3]="04"
//输出抽奖号码
System.out.print("本期开奖号码:");
for (int i = 0; i < red.length; i++) {
System.out.print(red[i]+" ");//输出红球号码
}
System.out.println("  "+blue);//输出蓝球

//数组的复制  —— Arrays.copyOf(原数组, 新数组长度);
String doubleBalls[]=Arrays.copyOf(red, red.length+1);
//将red数组的元素全数依次复制给新数组doubleBalls,并将长度加1作为新数组长度
doubleBalls[doubleBalls.length-1]=blue;//将抽取到的蓝色球赋给doubleBalls的最后一位下标
System.out.println("本期开奖号码:"+Arrays.toString(doubleBalls));
//直接将数组doubleBalls转换成字符串进行输出
}
}
0 0