如何比较 2 个不同数组中的每个数字?

问题描述 投票:0回答:1

我正在开发彩票应用程序:

  • 用户输入 1-25 之间的 5 个数字,这些数字将保存到数组中
  • 另一个数组填充 5 个 1-25 之间的随机数

我已经可以打印出两个数组了,但我不知道如何比较它们以查看用户是否获胜以及有多少个数字。

namespace ConsoleApp14
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] userBingo = new int[5];

            Console.WriteLine("Var vänligt och skriv in 5 tal mellan 1-25: ");

            for (int i = 0; i < userBingo.Length; i++)
            {
                int inputBingo;

                do
                {
                    string input = Console.ReadLine();

                    if (!int.TryParse(input, out inputBingo))
                    {
                        Console.WriteLine("Felaktig inmatning! Var vänlig och försök igen.");
                        continue;
                    }

                    if (inputBingo < 1 || inputBingo > 25)
                    {
                        Console.WriteLine("Var vänlig och skriv in ett tal mellan 1-25. ");
                        continue;
                    }

                    userBingo[i] = inputBingo;
                    break;
                } while (true);
            }

            Console.WriteLine("Här är dina tal!");            
                       
            foreach (int i in userBingo)
            {
                Console.WriteLine(i);
            }

            Console.WriteLine();
            Console.WriteLine("Och de vinnande talen är: ");

            int[] winningNumber = new int[5];
            Random random = new Random();

            for (int i = 0; i < winningNumber.Length; i++)
            {
                winningNumber[i] = random.Next(1,26);
            }

            foreach (int i in winningNumber)
            {
                Console.WriteLine(i);
            }

        }
    }
}

我实际上不确定要尝试什么,我最近才开始学习数组并知道如何创建它们,但不比较它们。

c# arrays
1个回答
0
投票

如果顺序很重要,您可以使用sequenceEquals

userBingo.SequenceEquals(winningNumber);

如果数字可以按任何顺序排列,您可以先对两个列表进行排序以确保顺序一致:

Array.Sort(userBingo);
Array.Sort(winningNumber);
userBingo.SequenceEquals(winningNumber);

如果保证数字是唯一的,你也可以使用 HashSet:

userBingo.HashSet().SetEquals(winningNumber);

请注意,您的老师可能期望您自己编写一些东西,而不是简单地使用库方法来完成所有繁重的工作。进行不区分顺序比较的一种方法是:

  1. 声明一个长度为26的数组,我们称之为直方图
  2. 循环遍历两个数组,使用数组值作为直方图索引并递增该值,即
    histogram[userBingo[i]]+=1
  3. 循环直方图,如果任何值是奇数,则数组不相等。
© www.soinside.com 2019 - 2024. All rights reserved.