为啥删除数组的某个元素,总是提示索引超出数组界限
为什么删除数组的某个元素,总是提示索引超出数组界限
string[] furniture = new string[] { "桌子", "椅子", "床", "沙发" };
int length = furniture.Length;
Console.WriteLine("the length of the array furniture is {0}", length);
Console.WriteLine("please input the index of what you delete:");
int index = Convert.ToInt16(Console.ReadLine());
if (index < 0 && index > 3)
{
Console.WriteLine("the index you input is wrong");
}
else
{
for (int i = index; i < length; i++)
{
furniture[i] = furniture[i + 1];//总是提示索引超出数组界限
}
}
foreach (string m in furniture)
{
Console.WriteLine("after delete the index is {0}", m);
}
Console.ReadLine();
}
------解决方案--------------------
furniture[i] = furniture[i + 1];你这个不超界限才怪。。。。
------解决方案--------------------
当i=3的时候 i+1=4>furniture.Length, furniture[i + 1]已经超出数组长度,注:索引从0开始
------解决方案--------------------
索引是从0开始的- -,如果还有点晕的话,单步一下就懂了。
------解决方案--------------------
i < length
=>
i < length-1
------解决方案--------------------
删除数组某一元素用RemoveAt()就好了啊?
------解决方案--------------------
数组的长度是固定的,印象中不存在删除某项的概念。如果其中的某个元素不需要了,一般是做致空操作。
如果需要动态改变的集合,可以用List<T>
------解决方案--------------------
................多看看基础的书吧
------解决方案--------------------
string[] furniture = new string[] { "桌子", "椅子", "床", "沙发" };
int length = furniture.Length;
Console.WriteLine("the length of the array furniture is {0}", length);
Console.WriteLine("please input the index of what you delete:");
int index = Convert.ToInt16(Console.ReadLine());
if (index < 0 && index > 3)
{
Console.WriteLine("the index you input is wrong");
}
else
{
for (int i = index; i < length; i++)
{
furniture[i] = furniture[i + 1];//总是提示索引超出数组界限
}
}
foreach (string m in furniture)
{
Console.WriteLine("after delete the index is {0}", m);
}
Console.ReadLine();
}
------解决方案--------------------
furniture[i] = furniture[i + 1];你这个不超界限才怪。。。。
------解决方案--------------------
当i=3的时候 i+1=4>furniture.Length, furniture[i + 1]已经超出数组长度,注:索引从0开始
------解决方案--------------------
索引是从0开始的- -,如果还有点晕的话,单步一下就懂了。
------解决方案--------------------
i < length
=>
i < length-1
------解决方案--------------------
删除数组某一元素用RemoveAt()就好了啊?
------解决方案--------------------
数组的长度是固定的,印象中不存在删除某项的概念。如果其中的某个元素不需要了,一般是做致空操作。
如果需要动态改变的集合,可以用List<T>
------解决方案--------------------
................多看看基础的书吧
------解决方案--------------------