插入数组(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();
将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
函数。