我正在尝试在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();
答案 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];
length
和length+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
功能。