插入数组(C#)

时间:2014-09-12 16:50:31

标签: c#

我正在尝试在int中在用户输入索引处插入int array值并收到错误: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();

3 个答案:

答案 0 :(得分:1)

从以下位置更改while循环条件:

while (length >= k)

为:

while (length > k)

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

另一个错误是你的数组在length变量中具有值的大小:

LinearArr[length]

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

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

答案 1 :(得分:1)

定义时

int[] LinearArr = new int[length];

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

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

lengthlength+1都不是有效索引。

为了解决这个问题,请在数组中分配足够的空间,然后开始在length-1移动元素:

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

答案 2 :(得分:0)

您可能需要考虑使用List<int>代替int[],因为它提供了Insert功能。