Java入门——判断数组元素重复:双色球

题目:6个红球1~33不重复,1个蓝球1~16,0+1 1+1 2+1六等奖,3+1 4+0五等奖,4+1 5+0四等奖,5+1三等奖,6+0二等奖,6+1一等奖

首先需要创建一个系统随机生成的中奖号码:

    public static int[] creatNumber(){
        int ball[]=new int[7];
        Random r=new Random();
        for (int i = 0; i < ball.length-1; ) {
            int red=r.nextInt(33)+1;
            boolean contains=contains(ball,red);
            if(!contains){
                ball[i]=red;
                i++;
            }
        }
        int blue=r.nextInt(16)+1;
        ball[6]=blue;
        return ball;
    }

由于红球元素不可重复,因此需要一个判断数组中是否存在某元素的方法,如果不存在 则存入数组,如果存在重新随机生成元素再次判断,只有在元素存入数组后 再进行i++,且蓝球不进行重复判断

判断数组元素重复:

    public static boolean contains(int arr[], int num) {
        for (int i = 0; i < arr.length; i++) {
            if (num == arr[i]) {
                return true;
            }
        }
        return false;
    }

有了系统生成的中奖号码后,就该用户输入自己的号码了:需要进行用户输入元素是否符合范围的判断,以及用户输入的红球元素是否重复的判断,蓝球不进行重复判断

    public static int[] inputUsers(){
        int choose[]=new int[7];
        Scanner sc= new Scanner(System.in);
        System.out.println("输入红球号码:");
        for (int i = 0; i < choose.length-1; ) {
            int input=sc.nextInt();
            if(input>0 && input<=33){
                boolean contain=contains(choose,input);
                if(!contain){
                    choose[i]=input;
                    i++;
                }else {
                    System.out.println("红球不可重复");
                }
            }else {
                System.out.println("红球范围1~33");
            }
        }
        System.out.println("输入蓝球号码:");
        while (true) {
            int input=sc.nextInt();
            if(input>0 && input<=16){
                choose[choose.length-1]=input;
                break;
            }else {
                System.out.println("蓝球范围1~16");
            }
        }
        return choose;
    }

有了系统生成的中奖号码,有了用户输入的号码,就该将两个数组进行比对,统计红蓝球猜中的个数:

    public static int redCnt(int ball[],int choose[]){
        int cnt=0;
        for (int i = 0; i < ball.length-1; i++) {
            for (int j = 0; j < choose.length-1; j++) {
                if(ball[i]==choose[j]){
                    cnt++;
                    break;
                }
            }
        }
        return cnt;
    }

    public static int blueCnt(int ball[],int choose[]){
        int cnt=0;
        if(ball[6]==choose[6]){
            cnt=1;
        }
        return cnt;
    }

最后在主函数中依据统计出的个数对中奖结果进行输出:

        int ball[]=creatNumber();
        int choose[]=inputUsers();
        System.out.println("中奖号码:");
        for (int i = 0; i < ball.length; i++) {
            System.out.print(ball[i]+" ");
        }
        System.out.println();
        System.out.println("你的号码:");
        for (int i = 0; i < choose.length; i++) {
            System.out.print(choose[i]+" ");
        }
        int redcnt=redCnt(ball,choose);
        int bluecnt=blueCnt(ball,choose);
        if((redcnt==0 && bluecnt==1) || (redcnt==1 && bluecnt==1) || (redcnt==2 && bluecnt==1)){
            System.out.println("六等奖");
        } else if ((redcnt==3 && bluecnt==1) || (redcnt==4 && bluecnt==0)) {
            System.out.println("五等奖");
        }else if ((redcnt==4 && bluecnt==1) || (redcnt==5 && bluecnt==0)) {
            System.out.println("四等奖");
        }else if ((redcnt==5 && bluecnt==1)) {
            System.out.println("三等奖");
        }else if ((redcnt==6 && bluecnt==0)) {
            System.out.println("二等奖");
        }else if ((redcnt==6 && bluecnt==1)){
            System.out.println("一等奖");
        }else {
            System.out.println("谢谢惠顾");
        }

OVER~~

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值