为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
四季花海 2021-06-28 13:35:54
我试图从数组 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 循环(即使条件为真)如果有人能给我一些建议,那会很有帮助,谢谢
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

首先:你为什么要使用'break;' ?

第二:在第一个 for - 循环中,您为 x[i] 分配了一个随机数,但是在嵌套的第二个循环中,您已经要求 x[j] 检查相同的值(但尚不存在)

有很多方法可以检查值是否相等,但我喜欢你的方法:所以我建议:

做一个 for - 循环并将所有随机数分配给 int[] x

然后再想一想如何评估 x[0] = x[1] 或 x[2] 或 x[3] ...


查看完整回答
反对 回复 2021-07-03
?
繁星coding

TA贡献1797条经验 获得超4个赞

我认为这将是最容易理解的解决方案,无需复杂的扩展方法:


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 elements

int[] y = new int[10];

int counter = 0;

Random rnd = new Random();

// fill the array

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

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

// iterate through distinct elements,

// otherwise, we would add multiple times duplicates

foreach (int i in x.Distinct())

    // if the count of an elements is greater than one, then we have duplicate

    if(x.Count(n => n == i) > 1)

    {

        y[counter] = i;

        counter++;

    }


查看完整回答
反对 回复 2021-07-03
  • 3 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信