java循环判断彩票中奖,数组比较问题

利用程序,完成下列需求:

中国福利彩票旗下有一种彩票叫3D,玩法是你随意买3个0-9之间的数字,这三个字有顺序,且可以重复;

根据开奖结果决定你的奖金;

例如: 假如你买的三个数字是 1,2,3;开奖结果是1,3,2;那么你只买对了第一个一个号;

因为每个数字既要号码对,也要位置对才算买对了号码;根据现在学习的知识,模拟这个彩票系统:

1.键盘录入三个数字,存放到数组,代表你买得3D彩票号码;

2.利用for循环随机产生三个0-9之间的数字,代表开奖结果,与买的彩票一一作比较;

a:如果一个也没有相同的,输出”坚持,幸运会属于你的!;

b: 有一个相同,输出”恭喜您您的奖金是10元”

c: 有两个相同,输出”恭喜您,您的奖金是40元”

d: 有三个相同,输出”恭喜您,您的奖金是160元”

        2、评分要求(按完成的功能量给与相应条件的分数,未实现该条件功能效果不给分):

1)正确定义数组(5分)

2)正确的键盘录入三个数并录入数组(5分)

3)正确定义数组并正确获取随机数存入数组(10分)

4)正确的循环条件比较两个数组的数据(5分)

5)正确的统计中奖号码个数(10分)

6)根据正确个数做合理的中将判断(10分)

7)合理的注释(5分)

1.定义一个A数组保存用户输入的数字;

2.定义一个B数组保存开奖数字;

3.循环判断,循环条件为数组长度,每次循环直接判断A[i]==B[i],判断成功计分

public static void main(String[] args) {
        //购买的3D
        int[] bug3D = new int[3];//购买3D号码
        int[] winning3D = new int[3];//中奖3D号码
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        //生成中奖号码
        for (int i = 0; i < winning3D.length; i++) {
            winning3D[i] = random.nextInt(10);//[0,10]
        }
        System.out.println("请输入你购买的3D号码(用空格隔开):");

        for (int i = 0; i < bug3D.length; i++) {
            bug3D[i] = sc.nextInt();
            if (bug3D[i] < 0 && bug3D[i] > 9) {
                throw new RuntimeException("请输入0-9数字");
            }
        }
        System.out.println("中奖号码为:" + Arrays.toString(winning3D));
        System.out.println("你购买的号码为:" + Arrays.toString(bug3D));

        //进行是否中奖判断
        int winningLevel = 4;//中奖等级,默认不中奖
        for (int i = 0; i < 3; i++) {
            if(bug3D[i] == winning3D[i]){
                winningLevel--;
            }
        }
        System.out.println("当前中奖等级为:"+winningLevel);
        switch (winningLevel){
            case 1:
                System.out.println("恭喜您,您的奖金是160元");break;
            case 2:
                System.out.println("恭喜您,您的奖金是40元");break;
            case 3:
                System.out.println("恭喜您您的奖金是10元");break;
            default:
                System.out.println("坚持,幸运会属于你的!");break;
        }
    }

这个main函数,你可以在你电脑运行一下,看看符不符合你要求

package com.sxt;

import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

public class Demo {

    /**
     * 获取多个char类型的随机数,范围在0到9之间
     *
     * @param number 需要获取多少个随机数
     * @return 生成的随机数
     */
    private static char[] getRandomNumbers(int number) {
        char[] randomNumbers = new char[number];
        Random random = new Random();
        int randomNumber = 0;

        //生成多个随机数。
        for (int i = 0; i < number; i++) {
            //Random类获取的随机数好像是伪随机数,每次程序启动按顺序获取的随机数好像都是一样的。
            //所以我们以Long类型的当前时间对9取余作为生成随机数的基础
            randomNumber = (int) (new Date().getTime() % 9);
            //上面获取的随机数,每次循环得到的都相同,因此我们在其基础上再加一个随机数,使得每次生成的随机数都不一样
            //两个随机数相加的值不能大于9
            randomNumber += random.nextInt(9 - randomNumber) + 48;
            //char是存放字符的,每一个字符用一个0到65535之间的数表示
            //'0'用48表示,'2'用49表示,以此类推
            //所以要在生成的随机数上加48才能和char类型的各位数的值进行比较

            randomNumbers[i] = (char) randomNumber;
        }
        return randomNumbers;
    }

    /**
     * 检查两个char数组中有多少个值是一一对应的,两个数组长度不相等或数组为空返回0
     *
     * @param array1
     * @param array2
     * @return
     */
    private static int getMemberEqualsNumber(char[] array1, char[] array2) {
        int result = 0;

        //如果两个数组都不为空且长度相等才进行判断,否则返回0
        if (array1 != null && array2 != null && array1.length == array2.length) {

            for (int i = 0; i < array1.length; i++) {

                if (array1[i] == array2[i]) {
                    result++;
                }

            }

        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println("猜奖开始,请输入3位0到9之间的数字,允许重复,输入by退出程序");

        Scanner scanner = new Scanner(System.in);
        String inputLine = "";

        while (true) {
            inputLine = scanner.nextLine();

            //如果用户输入的是"by"则退出
            if ("by".equals(inputLine)) {
                break;
            }

            //如果用户输入的内容长度不为3则让用户重新输入。
            if (inputLine.length() != 3) {
                System.out.println("請輸入3位0到9之间的数字,允许重复");
                continue;
            } else {//如果用户输入的内容长度为3则处理。
                //将用户输入的字符串转为字符数组
                char[] inputChars = inputLine.toCharArray();
                //获得3个0到9之间的随机数。
                char[] randomNumbers = getRandomNumbers(3);

                System.out.println("您购买的3个数分别是" + inputLine);
                System.out.println("系统的开奖结果是" + new String(randomNumbers));

                switch (getMemberEqualsNumber(inputChars, randomNumbers)) {
                    case 0:
                        System.out.println("坚持,幸运会属于你的!");
                        break;

                    case 1:
                        System.out.println("恭喜您,您的奖金是10元!");
                        break;

                    case 2:
                        System.out.println("恭喜您,您的奖金是40元!");
                        break;

                    case 3:
                        System.out.println("恭喜您,您的奖金是160元!");
                        break;

                }
            }
        }
        System.out.println("by");
    }
}