如何比较两个数组中的数字,实现彩票应用的中奖判定?
解决数组比较与中奖统计问题
要统计用户号码和中奖号码的匹配数量、判断中奖结果,你可以从基础到简洁的方式实现,以下是具体方案:
方法一:嵌套循环(适合数组入门阶段)
这是最基础的比对方式,通过两层循环逐一检查两个数组的元素:
在打印完中奖号码后,添加这段代码:
// 统计匹配的数字数量 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
相关产品推荐
相关产品推荐

