题目:双色球的摇号,双色球分为红球和蓝球,红球是01-33的33个球,蓝球是01-16的16个球要取6个红球跟一个蓝球,并且,红球不能重复,取出来之后,要对红球进行升序的排序,再取出蓝球;
例如: [ 02 22 13 16 18 12 ] [ 12 ];
代码实现如下:(注释里有代码解释)
注意摇出的号码不能出现重复,且要升序排序按要求输出!
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int redBall[]=new int[6];//存储6次红球的摇出的号码
int lanBall=0;//存储1次蓝球的摇号
Main.makeRedNumber(redBall);
System.out.print(" ");
Main.makeBlueNumber();
}
public static void makeRedNumber(int ball[]){ 生成红球的摇号并按要求打印
for(int i=0;i<ball.length;i++) {
int redball = (int) (Math.random() * 33) + 1;//随机生成1-33号
if (Main.isRepet(ball,redball)) {
i--;
continue;//判断摇红球的时候是否摇出了相同的号码,如果是,则再多一次判断
}
ball[i]=redball;//将无重复的摇号赋值进红球数组
}
Arrays.sort(ball);//这里可以偷懒调用Arrays工具类的sort方法对数组进行升序排序(也可以自己再写一个冒泡排序或者选择排序的方法,然后再调用排序即可)
for(int k=0;k<ball.length;k++){
int red=ball[k];
Main.printRed(red,k);//分别传进数值摇到的红球编号和输出位置的编号
}
}
public static boolean isRepet(int ball[],int ball1){ //判断红球的6个摇号是否重复
for(int i=0;i<ball.length;i++){
if(ball[i]==ball1){
return true;
}
}
return false;
}
public static void printRed(int red,int k){ //用来判断如果摇到的号是1-9时,输出变成0+“数字”形式
int[] number=new int[9];//用来判断摇到的号是否为1-9的整数数组
for(int j=0;j<number.length;j++){
number[j]=j+1;
}
if(k==0){ //位于开头的号码输出形式为“[ 01 ”
boolean flag=true;
for(int i=0;i<number.length;i++){
if(red==number[i]){
System.out.print("[ 0"+red+" ");
flag=false;
break;
}
}
if(flag)
System.out.print("[ "+red+" ");
}
if(k==5){ //位于结尾的号码输出形式为“ 01 ]”
boolean flag=true;
for(int i=0;i<number.length;i++){
if(red==number[i]){
System.out.print("0"+red+" ]");
flag=false;
break;
}
}
if(flag)
System.out.print(red+" ]");
}
if(k>=1&&k<=4){ //位于中间的号码输出形式为“ 01 ”
boolean flag=true;
for(int i=0;i<number.length;i++){
if(red==number[i]){
System.out.print("0"+red+" ");
flag=false;
break;
}
}
if(flag)
System.out.print(red+" ");
}
}
public static void makeBlueNumber(){ //生成蓝球的摇号并按要求打印
int bluenumber=(int)(Math.random()*16)+1;//随机生成1-16号,这里要用转换因为random()方法产生的数是double型[0,1)的数
//注意后面的括号问题,不然可能会先强制转换最后输出1
boolean flag=true;//用来判断如果摇到的号是1-9时,输出变成0+“数字”形式
int[] number=new int[9];
for(int i=0;i<number.length;i++){
number[i]=i+1;
}
for(int i=0;i<number.length;i++){ //该地方作用也是一样的控制开头、中间和结尾的输出格式
if(bluenumber==number[i]){
System.out.print("[ 0"+bluenumber+" ]");
flag=false;
break;
}
}
if(flag){
System.out.print("[ "+bluenumber+" ]");
}
}
}
最后代码成功运行的其中一种结果(如下图)