You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java彩票游戏:如何将随机生成号码与用户输入号码逐一比对?

Java彩票游戏匹配统计解决方案

首先,把用户输入的5个数字存入数组,能更方便地和中奖号码数组做比对,避免单独处理5个变量的繁琐。下面分两种常见的彩票匹配规则给出实现方案:

规则1:位置对应匹配(每个位置的数字与中奖号码对应位置一致才算匹配)

这种规则下,遍历两个数组的相同索引位置,逐一比对并统计匹配数即可:

import java.util.Scanner;
import java.util.Random;
public class Lotterygame
{
   public static void main (String[] args)
   {
       // 用数组存储用户输入,替代单独变量
       int[] userNumbers = new int[5];
       int matchCount = 0;
       Scanner input = new Scanner(System.in);

       Random random = new Random();
       int[] winningNumbers = new int[5];
       for (int i = 0; i < 5; i++) {
           winningNumbers[i] = random.nextInt(100);
       }

       // 循环获取用户输入并存入数组
       for (int i = 0; i < 5; i++) {
           System.out.printf("Enter the %dth number: ", i+1);
           userNumbers[i] = input.nextInt();
       }

       System.out.print("The winning numbers are: ");        
       for (int number : winningNumbers) {
           System.out.print(" " + number);
       }
        
       System.out.print("\nYour numbers are: ");
       for (int number : userNumbers) {
           System.out.print(" " + number);
       }

       // 统计位置对应的匹配数
       for (int i = 0; i < 5; i++) {
           if (winningNumbers[i] == userNumbers[i]) {
               matchCount++;
           }
       }

       // 根据匹配数输出对应结果
       System.out.println("\n\nMatch count: " + matchCount);
       if (matchCount == 5) {
           System.out.println("Congratulations! You won the grand prize!");
       } else if (matchCount == 4) {
           System.out.println("Great! You matched 4 numbers.");
       } else if (matchCount == 3) {
           System.out.println("Nice! You matched 3 numbers.");
       } else if (matchCount == 2) {
           System.out.println("You matched 2 numbers.");
       } else if (matchCount == 1) {
           System.out.println("You matched 1 number.");
       } else {
           System.out.println("No matches, better luck next time!");
       }

       input.close();
   }
}

规则2:数字存在即匹配(不考虑位置,用户输入的数字只要在中奖号码里就算匹配,需去重避免重复统计)

如果是这种规则,要检查每个用户输入的数字是否存在于中奖号码数组中,同时标记已匹配的中奖号码,防止重复计数:

import java.util.Scanner;
import java.util.Random;
public class Lotterygame
{
   public static void main (String[] args)
   {
       int[] userNumbers = new int[5];
       int matchCount = 0;
       Scanner input = new Scanner(System.in);

       Random random = new Random();
       int[] winningNumbers = new int[5];
       for (int i = 0; i < 5; i++) {
           winningNumbers[i] = random.nextInt(100);
       }

       for (int i = 0; i < 5; i++) {
           System.out.printf("Enter the %dth number: ", i+1);
           userNumbers[i] = input.nextInt();
       }

       System.out.print("The winning numbers are: ");        
       for (int number : winningNumbers) {
           System.out.print(" " + number);
       }
        
       System.out.print("\nYour numbers are: ");
       for (int number : userNumbers) {
           System.out.print(" " + number);
       }

       // 统计数字存在的匹配数(去重)
       boolean[] counted = new boolean[5]; // 标记中奖号码是否已被计数
       for (int userNum : userNumbers) {
           for (int j = 0; j < 5; j++) {
               if (!counted[j] && userNum == winningNumbers[j]) {
                   matchCount++;
                   counted[j] = true;
                   break; // 找到匹配后跳出内层循环,避免重复计数
               }
           }
       }

       // 输出结果
       System.out.println("\n\nMatch count: " + matchCount);
       if (matchCount == 5) {
           System.out.println("Congratulations! You won the grand prize!");
       } else if (matchCount == 4) {
           System.out.println("Great! You matched 4 numbers.");
       } else if (matchCount == 3) {
           System.out.println("Nice! You matched 3 numbers.");
       } else if (matchCount == 2) {
           System.out.println("You matched 2 numbers.");
       } else if (matchCount == 1) {
           System.out.println("You matched 1 number.");
       } else {
           System.out.println("No matches, better luck next time!");
       }

       input.close();
   }
}

核心优化点

  • 用数组存储用户输入,通过循环遍历比对,比单独处理firstDigit等变量更简洁易维护
  • 根据彩票规则选择对应匹配逻辑,确保统计结果符合需求
  • 用if-else分支根据匹配数输出不同反馈,逻辑清晰直观

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:45:04