如何扫描数组中的每个值,并将其与另一个数组中的每一个值进行比较



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

练习目标:用户猜测10个数字。然后将这些数字存储在一个数组中。调用数组"userGussedNumbers";在我的程序中(下面不包括(。然后程序将生成4个随机数并存储在一个数组中;生成WinningNumber";。现在程序将比较数组并显示匹配项。

我遇到的问题是:如何比较这两个数组并打印出中奖号码?将有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!");
}
}

}  

如果我正确理解你的问题,你说如果一个值猜对了,那么所有值都说猜对了。

我相信这是由于.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]}!");
}

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!");
}

相关内容

  • 没有找到相关文章

最新更新