首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

为啥删除数组的某个元素,总是提示索引超出数组界限

2013-03-28 
为什么删除数组的某个元素,总是提示索引超出数组界限string[] furniture new string[] { 桌子, 椅子

为什么删除数组的某个元素,总是提示索引超出数组界限
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()就好了啊?

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

热点排行