【发布时间】:2011-11-07 03:16:10
【问题描述】:
我有这个任务,我必须从数组中删除一个选定的元素,所以我想出了这个代码:
strInput = Console.ReadLine();
for (int i = 0; i < intAmount; i++)
{
if (strItems[i] == strInput)
{
strItems[i] = null;
for (int x = 0; x < intAmount-i; x++)
{
i = i + 1;
strItems[i - 1] = strItems[i];
}
intAmount = intAmount - 1;
}
}
问题是,假设我有一个数组[1,2,3,4,5,],我想删除1。输出将是[2,3,4,5,5]。当我选择2 时也会发生这种情况,但当我选择任何其他号码时不会发生这种情况。
我做错了什么?
【问题讨论】:
-
intAmount和strItems是什么?您在 for 循环中对 for 循环索引进行了大量操作,这通常是个坏主意。 -
你能澄清你的问题吗:你说[1,2,3,4,5],用删除1的操作,变成[2,3,4,5,5]。你如何选择 5 作为最后复制的元素?
-
strItems 为字符串数组,intAmount 为元素个数,strInput 为用户选择删除的元素。
-
我没有选择5进行复制,这是我遇到的问题。