读书人

为啥删除数组的某个元素总是提示索引

发布时间: 2013-03-28 10:20:24 作者: rapoo

为什么删除数组的某个元素,总是提示索引超出数组界限
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>
[解决办法]
................多看看基础的书吧
[解决办法]

引用:

i < length
=>
i < length-1


引用:
但是这样话,就无法删除最后一个元素


你这种删话是移动元素,而不是删除实际的值,因此你要记录一个数组长度,每次删除的时候长度--,就可以了。你要删最后一个只需长度--而不需移动元素。



引用:
删除数组某一元素用RemoveAt()就好了啊?

这个应该能满足你的要求。
[解决办法]
这不是咖啡胸吗,顶起

读书人网 >C#

热点推荐