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

如何比较两个数组中的数字,实现彩票应用的中奖判定?

解决数组比较与中奖统计问题

要统计用户号码和中奖号码的匹配数量、判断中奖结果,你可以从基础到简洁的方式实现,以下是具体方案:

方法一:嵌套循环(适合数组入门阶段)

这是最基础的比对方式,通过两层循环逐一检查两个数组的元素:

在打印完中奖号码后,添加这段代码:

// 统计匹配的数字数量
int matchCount = 0;
// 遍历用户输入的每一个号码
foreach (int userNum in userBingo)
{
    // 遍历所有中奖号码,检查是否匹配
    foreach (int winningNum in winningNumber)
    {
        if (userNum == winningNum)
        {
            matchCount++;
            break; // 找到匹配后跳出内层循环,避免重复计数
        }
    }
}

// 输出匹配结果
Console.WriteLine($"\n你一共匹配了 {matchCount} 个数字!");

// 判断中奖等级
if (matchCount == 5)
{
    Console.WriteLine("恭喜你中了一等奖!");
}
else if (matchCount == 4)
{
    Console.WriteLine("恭喜你中了二等奖!");
}
else if (matchCount == 3)
{
    Console.WriteLine("恭喜你中了三等奖!");
}
else if (matchCount > 0)
{
    Console.WriteLine("你中了小奖!");
}
else
{
    Console.WriteLine("很遗憾,没有中奖,下次加油!");
}

方法二:使用LINQ(更简洁的写法)

如果已经了解LINQ,可以用一行代码完成统计,需要先在文件顶部添加using System.Linq;:

// 一行代码统计匹配数量
int matchCount = userBingo.Count(num => winningNumber.Contains(num));

// 后续的结果输出、中奖判断逻辑和方法一完全一致

额外优化:确保中奖号码不重复

原代码生成中奖号码时可能出现重复数字,你可以修改生成逻辑保证每个号码唯一:

int[] winningNumber = new int[5];
Random random = new Random();
HashSet<int> uniqueNumbers = new HashSet<int>();

// 生成5个不重复的随机数
while (uniqueNumbers.Count < 5)
{
    int num = random.Next(1, 26);
    uniqueNumbers.Add(num); // HashSet会自动忽略重复值
}

// 将去重后的集合转为数组
winningNumber = uniqueNumbers.ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:10:56