第17天

一、双色球问题

package com.lianxi.www;

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

public class 双色球 {
    public static void main(String[] args) {
        // 1、随机生成中奖号码。
        int[] zhong = new int[7];
        zhong = create();
        for (int i = 0; i < 7; i++) {
            System.out.print(zhong[i] + " ");
        }
        // 2、玩家输入号码;
        int[] using = new int[7];
        using = user();
        // 3、记录前六位数字相同个数。
        int count1 = count(zhong, using);
        // 4、比较蓝色球是否相同。
        int flag = 0;
        if (zhong[6] == using[6]) {
            flag = 1;
        }
        if (flag == 1) {
            switch (count1) {
            case 0:
            case 1:
            case 2:
                System.out.println("中了5元。");
                break;
            case 3:
                System.out.println("中了10元。");
                break;
            case 4:
                System.out.println("中了200元。");
                break;
            case 5:
                System.out.println("中了3000元。");
                break;
            case 6:
                System.out.println("中了1000万元。");
                break;
            }
        } else if (flag == 0) {
            switch (count1) {
            case 1, 2, 3:
                System.out.println("很遗憾,您并未中奖");
            break;
            case 4:
                System.out.println("中了10元。");
                break;
            case 5:
                System.out.println("中了200元。");
                break;
            case 6:
                System.out.println("中了500万元。");
                break;
            }
        }
    }

    public static int[] create() {
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6;) {
            int num = r.nextInt(33) + 1;
            if (!cunzai(arr, num)) {
                arr[i] = num;
                 i++;
            }
        }
        arr[6] = r.nextInt(16) + 1;
        return arr;
    }

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

    public static int[] user() {
        int[] using = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            int num = sc.nextInt();
            using[i] = num;
        }
        using[6] = sc.nextInt();
        return using;
    }

    public static int count(int[] zhong, int[] using) {
        int count1 = 0;
        for (int i = 0; i < zhong.length - 1; i++) {
            if (zhong[i] == using[i]) {
                count1++;
            }
        }
        return count1;

    }
}
31 29 30 19 33 23 1 31
28
23
16
22
2
3
很遗憾,您并未中奖

 以上代码在对于用户本身所购买彩票号码方面存在问题,比如号码输入可能超出范围,或者出现重复。另外还存在我们只是对两个数组相应位置的判断,而没有考虑我们所输入的数字并不用考虑位置的问题。下面我们使用以下代码解决它。

package com.lianxi.www;

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

public class 双色球 {
    public static void main(String[] args) {
        // 1、随机生成中奖号码。
        int[] zhong = new int[7];
        zhong = create();
        for (int i = 0; i < 7; i++) {
            System.out.print(zhong[i] + " ");
        }
        // 2、玩家输入号码;
        int[] using = new int[7];
        using = user();
        for (int i = 0; i < using.length; i++) {
            System.out.println("第" + (i + 1) + "个数字为:" + using[i]);
        }
        // 3、记录前六位数字相同个数。
        int count1 = count(zhong, using);
        // 4、比较蓝色球是否相同。
        int flag = 0;
        if (zhong[6] == using[6]) {
            flag = 1;
        }
        if (flag == 1) {
            switch (count1) {
            case 0:
            case 1:
            case 2:
                System.out.println("中了5元。");
                break;
            case 3:
                System.out.println("中了10元。");
                break;
            case 4:
                System.out.println("中了200元。");
                break;
            case 5:
                System.out.println("中了3000元。");
                break;
            case 6:
                System.out.println("中了1000万元。");
                break;
            }
        } else if (flag == 0) {
            switch (count1) {
            case 1, 2, 3:
                System.out.println("很遗憾,您并未中奖");
                break;
            case 4:
                System.out.println("中了10元。");
                break;
            case 5:
                System.out.println("中了200元。");
                break;
            case 6:
                System.out.println("中了500万元。");
                break;
            }
        }
    }

    public static int[] create() {
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6;) {
            int num = r.nextInt(33) + 1;
            if (!cunzai(arr, num)) {
                arr[i] = num;
                i++;
            }
        }
        arr[6] = r.nextInt(16) + 1;
        return arr;
    }

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

    public static int[] user() {
        int[] using = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6;) {
            int num = sc.nextInt();
            if (num >= 1 && num <= 33) {
                boolean flag = cunzai(using, num);
                if (!flag) {
                    using[i] = num;
                    i++;
                } else {
                    System.out.println("您输入的数字已经存在,请重新输入:");
                }
            } else {
                System.out.println("您输入的数超出范围,请重新输入:");
            }
        }
        while (true) {
            int bluenum = sc.nextInt();
            if (bluenum >= 1 && bluenum <= 16) {
                using[using.length - 1] = bluenum;
                break;
            } else {
                System.out.println("您输入的蓝色球数字超出范围,请重新输入:");
            }
        }
        return using;
    }

    public static int count(int[] zhong, int[] using) {
        int count1 = 0;
        for (int i = 0; i < zhong.length - 1; i++) {
            for (int j = 0; j < using.length - 1; j++) {
                if (zhong[i] == using[j]) {
                    count1++;
                }
            }
        }
        return count1;

    }
}
14 13 19 15 22 21 16 
21
22
15
19
13
14
16
第1个数字为:21
第2个数字为:22
第3个数字为:15
第4个数字为:19
第5个数字为:13
第6个数字为:14
第7个数字为:16
中了1000万元。

 

posted @ 2023-07-18 17:35  七安。  阅读(31)  评论(0编辑  收藏  举报