Java实现输出双色球摇号问题

题目:双色球的摇号,双色球分为红球和蓝球,红球是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+" ]");
          }
    }
}

 最后代码成功运行的其中一种结果(如下图)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁岁岁平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值