java案例之制作系统

java案例之制作系统

案例

在这里插入图片描述

需求

  • 定义一个方法,可以接收中奖号码的数组,用户选号的数组;
  • 根据命中红球数和篮球数判断最终的结果并输出。

分析

  • 系统需要三部份
  • 第一部分是:生成随机产生的7位数双色球数字,其中前6位是红球,第7位是蓝球,红球范围是1–33,蓝球范围是1–16,产生随机数的方法Random.,注意这里我们需要返回数组,红球与蓝球应该分别随机生成赋值,其中的小技巧为参照数flage。
    局部代码
// 随机生成一组号码
    public static int[] lucknum(){
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
        int[] arr1 = new int[7];
        // 先遍历前6个红球;
        for (int i = 0; i < arr1.length-1; i++) {
            while (true){
                int num = r.nextInt(33)+1; // 1--33,(0--32)+1
                boolean flage = true;
                for (int j = 0; j < i; j++) {
                    if(arr1[j] == num){
                        flage = false;
                        break;
                    }
                }
                if(flage){
                    arr1[i] = num;
                    break;
                }
            }
        }
        arr1[arr1.length-1] = r.nextInt(16)+1; // 蓝球是 1-16
        return arr1;
    }

再定义了方法后,我们写一个数组遍历输出方法去输出数组,看一下数组的情况。

  • 输出数组的程序方法如下:
public static void printArray(int[] arr){
        System.out.print("(");
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                System.out.print(arr[i]+")");
            }else {
                System.out.print(arr[i]+";");
            }
        }
    }
  • 下面我们要写一个可以手动输入7位获奖位数的方法,类型和方法1有点类似,也是以数组的格式输出
public static int[] uernum(){
        Scanner sc = new Scanner(System.in);
        int[] num = new int[7];
        for (int i = 0; i < 6; i++) {
            System.out.print("请输入1--33之间不重复的红球号码:");
            int uernum = sc.nextInt();
            num[i] = uernum;
        }
        System.out.print("请输入1--16之间的蓝球号码:");
        num[num.length-1] = sc.nextInt();
        System.out.print("您输入的双色球号码是:");
        printArray(num);
        return num;
    }
  • 再生成随机生成的7位中奖号码与手动输入的7位猜测号码,后面我们需要遍历两个数组去判断猜中了多少红球与蓝球,以便于去判断中奖情况。
   public static void judge(int[] arr1,int[] arr2){
        int red = 0;
        int blue = 0;
        for (int i = 0; i < arr2.length-1; i++) {
            for (int j = 0; j < arr1.length-1; j++) {
                if(arr2[i]==arr1[j]){
                    red += 1;
                    break;
                }
            }
        }
        blue = arr1[arr1.length-1] == arr2[arr2.length-1] ? 1:0;
        System.out.println();
        System.out.print("您猜中的红球个数是:"+red);
        System.out.println();
        System.out.print("您是否猜中篮球:"+(blue==1));
        System.out.println();
       
     
        if (red ==1 && blue==1 || red ==2 && blue==1 || red==0 && blue==1){
            System.out.println("恭喜您中5元。");
        }else if(red==3 && blue==1 || red==4&&blue==0){
            System.out.println("恭喜您中10元。");
        }else if (red==4 && blue==1 ||red==5&& blue==0){
            System.out.println("恭喜您中200元。");
        }else if(red==5 && blue==1){
            System.out.println("恭喜您中3000元。");
        }else if(red ==6 && blue==0){
            System.out.println("恭喜您中500万。");
        }else if(red == 6 && blue==1){
            System.out.println("恭喜您中1000万。");
        }else {
            System.out.println("#############");
        }
    }
    

完整代码:

package 编程思维训练;
import java.util.Scanner;
import java.util.Random;
public class ten {
    public static void main(String[] args) {
        int[] lucknum = lucknum();
        System.out.println("luck num:");
        printArray(lucknum);
        System.out.println();
        int[] uernum = uernum();
        judge(lucknum,uernum);



    }
    // 随机生成一组中奖号码
    public static int[] lucknum(){
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
        int[] arr1 = new int[7];
        // 先遍历前6个红球;
        for (int i = 0; i < arr1.length-1; i++) {
            while (true){
                int num = r.nextInt(33)+1; // 1--33,(0--32)+1
                boolean flage = true;
                for (int j = 0; j < i; j++) {
                    if(arr1[j] == num){
                        flage = false;
                        break;
                    }
                }
                if(flage){
                    arr1[i] = num;
                    break;
                }
            }
        }
        arr1[arr1.length-1] = r.nextInt(16)+1; // 蓝球是 1-16
        return arr1;
    }
    public static void printArray(int[] arr){
        System.out.print("(");
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                System.out.print(arr[i]+")");
            }else {
                System.out.print(arr[i]+";");
            }
        }

    }
    public static int[] uernum(){
        Scanner sc = new Scanner(System.in);
        int[] num = new int[7];
        for (int i = 0; i < 6; i++) {
            System.out.print("请输入1--33之间不重复的红球号码:");
            int uernum = sc.nextInt();
            num[i] = uernum;
        }
        System.out.print("请输入1--16之间的蓝球号码:");
        num[num.length-1] = sc.nextInt();
        System.out.print("您输入的号码是:");
        printArray(num);
        return num;
    }
    public static void judge(int[] arr1,int[] arr2){
        int red = 0;
        int blue = 0;
        for (int i = 0; i < arr2.length-1; i++) {
            for (int j = 0; j < arr1.length-1; j++) {
                if(arr2[i]==arr1[j]){
                    red += 1;
                    break;
                }
            }
        }
        blue = arr1[arr1.length-1] == arr2[arr2.length-1] ? 1:0;
        System.out.println();
        System.out.print("您猜中的红球个数是:"+red);
        System.out.println();
        System.out.print("您是否猜中篮球:"+(blue==1));
        System.out.println();
      
        if (red ==1 && blue==1 || red ==2 && blue==1 || red==0 && blue==1){
            System.out.println("恭喜您中5元。");
        }else if(red==3 && blue==1 || red==4&&blue==0){
            System.out.println("恭喜您中10元。");
        }else if (red==4 && blue==1 ||red==5&& blue==0){
            System.out.println("恭喜您中200元。");
        }else if(red==5 && blue==1){
            System.out.println("恭喜您中3000元。");
        }else if(red ==6 && blue==0){
            System.out.println("恭喜您中500万。");
        }else if(red == 6 && blue==1){
            System.out.println("恭喜您中1000万。");
        }else {
            System.out.println("############");
        }
    }

}


实验结果

在这里插入图片描述
在这里插入图片描述

参考

黑马程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Peihj2021

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

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

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

打赏作者

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

抵扣说明:

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

余额充值