【问题标题】:How to scan every value in an array and compare it to every value in another array?如何扫描数组中的每个值并将其与另一个数组中的每个值进行比较?
【发布时间】:2025-12-31 14:50:11
【问题描述】:

我是编程界的新手,如果能帮我完成一个练习,我将不胜感激。

练习目标:用户猜 10 个数字。然后将这些数字存储在一个数组中。数组被称为 我的程序中的“userGussedNumbers”(它不包括在下面)。然后程序将 生成 4 个随机数并存储在数组“generatedWinningNumber”中。现在程序 将比较数组并显示匹配项。

我遇到的问题:如何比较这两个数组并打印出中奖号码?会有4 中奖号码。您可以在下面看到我的解决方案,但是当它获得第一个时它会停止 匹配。我希望它继续扫描更多匹配项并显示所有匹配项(如果有匹配项) 找到了。

private static void Main()
        {

        Random randomNumber = new Random();
        int[] generatedWinningNumber = new int[4];
        int temp;
           // Console.WriteLine("\nThese are the winning number...");

            for (int i = 0; i<generatedWinningNumber.Length; i++)
            {
                temp = randomNumber.Next(1, 26);
                generatedWinningNumber[i] = temp;
                
                

                if (userGussedNumbers.Intersect(generatedWinningNumber).Any())
                {
                    Console.WriteLine("\n Number {0} matched", userGussedNumbers[i]);
                }
                else
                {
                    
                    Console.WriteLine("No match!");
                }
            }


        }  

【问题讨论】:

  • “停止”是什么意思?

标签: c# compare


【解决方案1】:

如果我正确理解了您的问题,您的意思是,如果一个值被猜对了,那么他们都说他们被猜对了。

我相信这是由于 .Intersect(...).Any()。我不是这个函数的专家,但我相信如果数组中的任何值匹配,它就会返回 true。也许只是使用 System.Linq 中的 .Contains()

using System.Linq;

Random randomNumber = new Random();
//int[] userGuessedNumbers = new int[10] { 9, 2, 15, 4, 11, 6, 7, 8, 2, 10 };
int[] generatedWinningNumber = new int[4];

for (int i = 0; i < generatedWinningNumber.Length; i++)
{
    //Removed unnecessary temp
    generatedWinningNumber[i] = randomNumber.Next(1, 26);

    //An easier way to format most strings in C# is by using $"string here {variablesHere}"
    if (userGuessedNumbers.Contains(generatedWinningNumber[i]))
        Console.WriteLine($"\nNumber {generatedWinningNumber[i]} matched!");
    else
        Console.WriteLine($"\nNo match to {generatedWinningNumber[i]}!");
}

【讨论】:

  • 如果解决了问题记得标记为答案,这样有类似问题的其他人可以快速找到答案:)
【解决方案2】:

Intersect 方法将为您提供一个包含所有当前中奖号码的序列,因此您也可以尝试类似的方法。

    Random randomNumber = new Random();
    int[] generatedWinningNumber = new int[4];
        for (int i = 0; i<generatedWinningNumber.Length; i++)
        {
            generatedWinningNumber[i] = randomNumber.Next(1, 26);
        }
    
    var winningNumbers = userGussedNumbers.Intersect(generatedWinningNumber);
    if (winningNumbers.Any())
    {
        foreach(int number in winningNumbers) {
            Console.WriteLine("\nNumber {0} matched", number);
        }
    }
    else
    {
        Console.WriteLine("No match!");
    }

【讨论】:

    最近更新 更多