我如何检查我的数组是否包含我猜测的数字分别

本文关键字:包含我 数字 是否 数组 何检查 检查 我的 | 更新日期: 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,然后将值相加。结果是有效的匹配数。