插入数组(C#)

本文关键字:数组 插入 | 更新日期: 2023-09-27 18:21:44

我试图在用户输入索引的int array中插入一个int值,但得到一个错误:Index was outside the bounds of the array。错误在while循环中,但解决方案不使用任何方法,如Array.Add

Console.WriteLine("Enter the length of Linear Array");
int length = Convert.ToInt32(Console.ReadLine());
int[] LinearArr = new int[length];
Console.WriteLine("Maximum number of input : {0}",length);
for (int i = 0; i < LinearArr.Length; i++)
{
    LinearArr[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("What number you want to insert and at what index");
int InsertNum = Convert.ToInt32(Console.ReadLine());
int k = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Number :{0} and Index :{1}",InsertNum,k);
while (length>=k)
{
    LinearArr[length + 1] = LinearArr[length];
    length = length - 1;
}
LinearArr[k] = InsertNum;
length = length + 1;
Console.ReadLine();

插入数组(C#)

将while循环条件从:更改为

while (length >= k)

至:

while (length > k)

在当前条件下,它将访问不在数组中的最后一个索引。

另一个错误是您的数组的大小与length变量中的值相同:

LinearArr[length]

在while循环中,您访问的索引大于数组长度:

LinearArr[length + 1] = LinearArr[length]; // length +1 will give out of bounds error

定义时

int[] LinearArr = new int[length];

有效索引为CCD_ 6。。length-1。因此,此表达式会导致一个超出范围的异常:

LinearArr[length + 1] = LinearArr[length];

CCD_ 8和CCD_。

为了解决这个问题,在阵列中分配足够的空间,并在length-1:处开始移动元素

int[] LinearArr = new int[length+1]; // Make space for an expansion
...
while (length > k) {
    LinearArr[length] = LinearArr[length-1];
    length--;
}

您可能需要考虑使用List<int>而不是int[],因为它提供了Insert函数。