我有两个数组。第一个数组是用户输入的一组整数。第二个数组没有恒定大小,它取决于第一个数组中输入数字的存在次数。程序搜索第一个数组,并将匹配数字的索引插入第二个数组。
因此,例如,如果数字3在第一个数组中出现5次,则第二个数组的大小将为5。
以下是仅包含搜索的代码片段。 Array arr由用户设置。
int[] pos = new int[?];
int z = 0;
Console.Write("Now enter a number to compare: ");
int c = Convert.ToInt32(Console.ReadLine());
for (int j = 0; j < arr.Length-1; j++)
{
if (arr[j] == c)
{
pos[z] = j;
z++;
}
}
我确信有一个非常简单的解决方案,我可以忽略。我在第二个数组中没有任何空值,否则会破坏我程序的其余部分,并且大小必须与找到该数字的次数完全相同。
答案 0 :(得分:2)
.NET中的数组具有固定大小。 “调整”数组大小的唯一方法是创建一个大小合适的新数组,复制所有现有项目,并继续使用新数组而不是旧数组。
或者......您可以使用.NET中的一种动态集合类型,例如List<T>
。
你声明如下:
List<int> pos = new List<int>();
并通过调用其Add方法向其中添加另一个项目:
pos.Add(j);
如果最后你仍然需要它作为数组,你可以在列表上调用.ToArray()
来获取一个包含列表所有元素的正确大小的数组。
答案 1 :(得分:1)
看看
System.Collections.Generic.List<int>.
您可以使用
添加项目list.add(123)
当你需要一个数组结束时,你可以调用
var array = list.ToArray()
答案 2 :(得分:1)
我会用
List<T>
而不是数组
我相信这是你想要做的最佳选择。
答案 3 :(得分:0)
设置第二个数组的大小与第一个数组的大小相同,因为比较数组的大小应该相等,并且查找相同的大小:
int[] pos = new int[arr.Length];