我如何检查我的数组是否包含我猜测的数字分别
本文关键字:包含我 数字 是否 数组 何检查 检查 我的 | 更新日期: 2023-09-27 17:54:34
如果我的数组中包含按顺序排列的随机数(1,2,3,4,5,6,7),并且我想创建另一个我猜测的数组(1,4,2,4,5,6,7),我想看看我分别得到了多少个正确的。
下面是我的代码:
Console.WriteLine("Can you guess the numbers that have appeared on the screen respectively?");
for (int i = 1; i < num.Length; i++)
{
Console.Write(i + ". ");
string temp = Console.ReadLine();
userGuess[i] = Convert.ToInt32(temp);
}
for (int i = 1; i < num.Length; i++)
{
if (num[i] == userGuess[i])//Here's my problem. I am unable to
//test whether my guess resides in the num array.
{
count++;
}
}
Console.WriteLine("You got " + count + " guesses right.");
如果我选择1、4、2、4、5、6、7,判断我的num数组分别包含1、2、3、4、5、6、7,Count最终应该是正确的5。
谢谢!
就像@failedprogramming说的,你没有匹配数组userGuess和num之间的索引。我知道你想用no开始用户输入。"1"但是,它会让你的userguess数组在错误的索引中移动。
1 2 3 4 5 6 7
blank 1 4 2 4 5 6
所以,你没有正确答案。
也许你可以这样写:
Console.WriteLine("Can you guess the numbers that have appeared on the screen respectively?");
for (int i = 1; i < num.Length+1; i++)
{
Console.Write(i + ". ");
string temp = Console.ReadLine();
userGuess[i-1] = Convert.ToInt32(temp);
}
for (int i = 0; i < num.Length; i++)
{
if (num[i] == userGuess[i])//Here's my problem. I am unable to
//test whether my guess resides in the num array.
{
count++;
}
}
Console.WriteLine("You got " + count + " guesses right.");
由于两个数组的长度相等,您可以使用LINQ的Zip()
方法:
var result = num.Zip(userGuess, (n, u) => n == u ? 1 : 0).Sum();
比较两个列表中每个对应的元素,匹配返回1,不匹配返回0,然后将值相加。结果是有效的匹配数。