int[] a = new int[] { 1, 2, 3, 4 };
int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
int Count = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < b.Length; j++)
{
if (a[i] == b[j])
{
Count++;
break;
}
}
}
Console.WriteLine(Count);
Console.ReadLine();
上面是一个简单的程序,可以搜索两个数组并找到它们之间的重复项。但是,我在将第一个数组设为二维数组时遇到了困难,因为我在运行“索引超出数组边界”下方的代码时遇到错误。我真的不知道该怎么做,如果有任何帮助,我将不胜感激。
int[][] a = {new int[] { 1, 2, 3, 4 }, new int[] { 3, 9, 9 }};
int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
int Count = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < b.Length; j++)
{
if (b[j] == a[i][j])
{
Count++;
break;
}
}
}
Console.WriteLine(Count);
Console.ReadLine();
最佳答案
我假设您想在二维数组和一维数组之间查找重复项。
int[][] a = { new int[] { 1, 2, 3, 4 }, new int[] { 3, 9, 9 } };
int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
int Count = 0;
for (int h = 0; h < a.Length; h++)
{
for (int i = 0; i < a[h].Length; i++)
{
for (int j = 0; j < b.Length; j++)
{
if (b[j] == a[h][i])
{
Count++;
break;
}
}
}
}
或者在 Linq 中 ;)
int Count = (from i in a from j in i from k in b where k == j select j).Count();
= 在 a2 和 b 之间找到 2 个重复项?
为新规范编辑
为每个二维数组元素存储重复项的第二次编辑。
var duplicates = new List<int>();
foreach (var i in a)
{
var duplicate = 0;
foreach (var j in i)
{
foreach (var k in b)
{
if (k == j)
{
duplicate++;
}
}
}
duplicates.Add(duplicate);
}
或者再次 linq ;)
var duplicates = a.Select(i => (from j in i from k in b where k == j select j).Count()).ToList();
更新 3: 对于您选择的代码格式:
var duplicates = new List<int>();
for (int h = 0; h < a.Length; h++)
{
var duplicate = 0;
for (int i = 0; i < a[h].Length; i++)
{
for (int j = 0; j < b.Length; j++)
{
if (b[j] == a[h][i])
{
duplicate++;
break;
}
}
}
duplicates.Add(duplicate);
}
添加了重复输出:
for (int d = 0; d < duplicates.Count; d++)
{
Console.WriteLine(duplicates[d]);
}
关于c# 如何将值与二维数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292765/