gpt4 book ai didi

c# - 如何删除一个 int 数组中存在于另一个 int 数组中的所有元素?

转载 作者:行者123 更新时间:2023-12-02 09:46:28 26 4
gpt4 key购买 nike

在我的 C# 程序中,我有一个 int 数组,其中包含一组整数,并且偶尔会包含这些整数的重复项。我想创建一个数组,该数组仅包含初始数组中作为重复项存在的数字,但其本身不包含重复项。根据我对 C# 的新手理解,我认为以下代码可以解决问题:

int a = 9;
int b = 6;
int c = 3;
int index = 0;

int[] mltpls = new int[a + b + c];

while (a > 0)
{
mltpls[index] = 2 * a;
a -= 1;
index += 1;
}

while(b > 0)
{
mltpls[index] = 3 * b;
b -= 1;
index += 1;
}

while(c > 0)
{
mltpls[index] = 5 * c;
c -= 1;
index += 1;
}

int[] mltpls_unique = mltpls.Distinct().ToArray();
int[] mltpls_dplcts = mltpls.Except(mltpls_unique).ToArray();

Console.WriteLine(mltpls_dplcts);

//EDIT

//By running the following code I can write out all numbers in "mltpls"
for (int i = 0; i < mltpls.Length; i++)
{
Console.Write(mltpls[i] + ", ");
}

/*If I try to run equivalent code for the "mltpls_dplcts" array nothing
only a blank line is displayed.*/

当我运行这个目标时,我的控制台应用程序的最终结果是一个空白行。我对此的解释是数组 mltpls_dplcts 为空,或者我错误地打印了该数组。

如何从数组中只获取重复值?

最佳答案

My interpretation of this is that the array mltpls_dplcts is empty or that I'm incorrectly going about printing the array.

两种解释都是正确的

Distinct 将返回 mltps 中至少出现过一次的每个项目。如果您现在应用 Except,您将一无所获,因为 mltpls_unique 中的所有项目也都存在于 mltps 中。数组中的项目按值进行比较,因此对于 Except 来说,一个数字是否在另一个数组中出现多次并不重要。如果存在一次,则不会返回该号码。所以你得到一个空数组。

此外,您不能简单地将整个数组插入 Console.WriteLine 中。使用循环或 String.Join 来打印内容:

Console.WriteLine(String.Join(" ",mltpls_dplcts));

解决方案:您可以使用良好的旧循环方法来解决它;)

int[] mltpls_unique = mltpls.Distinct().ToArray();
// The amount of duplicates is the difference between the original and the unique array
int[] mltpls_dplcts = new int[mltpls.Length-mltpls_unique.Length];


int dupCount = 0;
for (int i = 0; i < mltpls.Length; i++)
{
for (int j = i+1; j < mltpls.Length; j++)
{
if (mltpls[i] == mltpls[j])
{
mltpls_dplcts[dupCount] = mltpls[i];
dupCount++;
}
}
}

Output: 18 12 10 6 15

关于c# - 如何删除一个 int 数组中存在于另一个 int 数组中的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com