将 x 数组中的重复元素添加到 y 数组中

我试图从数组 x 中找到 2 个或更多相同的元素,然后将重复的元素添加到新数组 Y


因此,如果我有 x 数组编号,例如:2,5,7,2,8 我想将数字 2 添加到 y 数组中


int[] x = new int[20];

        Random rnd = new Random();

        int[] y = new int[20];

        int counter = 0;



        for (int i = 0; i < x.Length; i++)

        {

            x[i] = rnd.Next(1, 15);


            for (int j=i+1;  j< x.Length; j++)

            {

                if (x[i] == x[j]) 

                {


                    y[counter] = x[i];

                    Console.WriteLine("Repeated numbers are " + y[counter]);

                    counter++;

                }

                else

                {

                    Console.WriteLine("There is no repeated numbers, numbers that are in x are  " + x[i]);

                }

                break;

            }

        }

但是有问题,当涉及到 if 循环时,它不想继续执行 if 循环(即使条件为真)


如果有人能给我一些建议,那会很有帮助,谢谢


四季花海
浏览 180回答 3
3回答

红糖糍粑

首先:你为什么要使用'break;'&nbsp;?第二:在第一个 for - 循环中,您为 x[i] 分配了一个随机数,但是在嵌套的第二个循环中,您已经要求 x[j] 检查相同的值(但尚不存在)有很多方法可以检查值是否相等,但我喜欢你的方法:所以我建议:做一个 for - 循环并将所有随机数分配给 int[] x然后再想一想如何评估 x[0] = x[1] 或 x[2] 或 x[3] ...

繁星coding

我认为这将是最容易理解的解决方案,无需复杂的扩展方法:int[] x = new int[20];// there can be at most 10 duplicates in array of length of 20 :)// you could use List<int> to easily add elementsint[] y = new int[10];int counter = 0;Random rnd = new Random();// fill the arrayfor (int i = 0; i < x.Length; i++)&nbsp; &nbsp; x[i] = rnd.Next(1, 15);// iterate through distinct elements,// otherwise, we would add multiple times duplicatesforeach (int i in x.Distinct())&nbsp; &nbsp; // if the count of an elements is greater than one, then we have duplicate&nbsp; &nbsp; if(x.Count(n => n == i) > 1)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; y[counter] = i;&nbsp; &nbsp; &nbsp; &nbsp; counter++;&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP