java入门-双色球

package com.ningts.hello;

import java.util.Random;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        int[] setNo = noAsc(setNo());
        noPrint(setNo, "排序set");
        int[] getNo = noAsc(getNo());
        noPrint(getNo, "排序get");
        checkRes(getNo, setNo);
    }

    public static int[] getNo() {
        //获取录入的数据
        int[] getNo = new int[7];
        for (int i = 0; i < getNo.length - 1; i++) {
            while (true) {
                System.out.println("-------请录入第" + (i + 1) + "个红球-------");
                Scanner sc = new Scanner(System.in);
                int redNo = sc.nextInt();
                if (ckRed(getNo, redNo) == "正确") {//调用验证方法,判断是否符合要求
                    getNo[i] = redNo;
                    break;//如果此次数据符合要求,数据存入数组,本次while结束
                } else {
                    System.out.println(ckRed(getNo, redNo));//while不结束,继续循环下一次
                }
            }
        }
        while (true) {
            System.out.println("-------录入蓝球-------");
            Scanner sc = new Scanner(System.in);
            int blueNo = sc.nextInt();
            if (ckBlue(blueNo) == "正确")  {
                getNo[getNo.length - 1] = blueNo;
                break;
            } else {
                System.out.println(ckBlue(blueNo));
            }
        }
        noPrint(getNo, "原始get");
        return getNo;
    }

    public static int[] setNo() {
        //设置中奖的号码,随机出一组数据
        Random r = new Random();
        int[] setNo = new int[7];
        //红球
        for (int i = 0; i < setNo.length - 1; i++) {
            //随机一个范围内红球,放入数组
            while (true) {
                int redBall = r.nextInt(33) + 1;
                boolean f = true;
                for (int j = 0; j < i; j++) {
                    if (redBall == setNo[j]) {
                        f = false;
                        break;
                    }
                }
                if (f) {
                    setNo[i] = redBall;
                    break;
                }
            }
        }
        //篮球,直接随机即可
        setNo[setNo.length - 1] = r.nextInt(16) + 1;
        noPrint(setNo, "原始set");
        return setNo;
    }

    public static void checkRes(int[] gets, int[] sets) {
        //检查中奖结果
        int red = 0;
        int blue = 0;
        for (int i = 0; i < gets.length - 1; i++) {
            for (int j = 0; j < sets.length - 1; j++) {
                if (gets[i] == sets[j]) {
                    red++;
                }
            }
        }
        if (gets[gets.length - 1] == sets[sets.length - 1]) {
            blue++;
        }
        String res = "命中:"+red+"+"+blue+",";
        if (red == 6 && blue == 1) {
            res += "一等奖";
        } else if (red == 6 && blue == 0) {
            res += "二等奖";
        } else if (red == 5 && blue == 1 || red == 6 && blue == 0) {
            res += "三等奖";
        } else if (red == 5 && blue == 0 || red == 4 && blue == 1) {
            res += "四等奖";
        } else if (red == 4 && blue == 0 || red == 3 && blue == 1) {
            res += "五等奖";
        } else if (red == 2 && blue == 1 || red == 1 && blue == 1 || red == 0 && blue == 1) {
            res += "六等奖";
        } else {
            res += "未中奖";
        }
        noPrint(sets,"开奖号码");
        noPrint(gets,"你的号码");
        System.out.println(res);
    }

    public static int[] noAsc(int[] nos) {
        //排序,只需排前六个即可
        int tmp = 0;
        for (int i = 0; i < nos.length - 2; i++) {
            for (int j = 0; j < nos.length - i - 2; j++) {
                if (nos[j] > nos[j + 1]) {
                    tmp = nos[j + 1];
                    nos[j + 1] = nos[j];
                    nos[j] = tmp;
                }
            }
        }
        return nos;
    }

    public static void noPrint(int[] arr, String note) {
        //打印显示对应信息
        System.out.println("**********" + note + "**********");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
    }

    public static String ckRed(int[] arr, int redNo) {
        //检查红球的是否符合要求
        String rs = "正确";
        if (redNo > 0 && redNo <= 33) {//先判断是否符合数据区间要求
            for (int i = 0; i < arr.length-1; i++) {//循环判断是否已经存在,判断前六位即可
                if (arr[i] == redNo) {
                    rs = "error--->红球不能重复,请重新输入";
                }
            }
        } else {
            rs = "error--->红球应该在1-33之间,请重新输入";
        }
        return rs;
    }

    public static String ckBlue(int blueNo) {
        //检查蓝球的是否符合要求
        String rs = "正确";//默认是正确的
        if (blueNo <= 0 || blueNo > 16) {
            rs = "error--->蓝球应该在1-16之间,请重新输入";
        }
        return rs;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值