c# - 删除和查找数组中的元素
问题描述
我只想知道如何解决我的代码中的一个小问题......当它删除我想要的元素时,输出会复制数组中的最后一个元素。有什么建议么?
这是代码:
static void Main(string[] args)
{
int[] List = { 12, 122, 2, 3, 4, 5, 6 };
int nrElements =7;
for (int i = 0; i <= nrElements -1; i++)
{
Console.Write(" " + List[i] );
}
Console.WriteLine("Above is the array");
Console.WriteLine("What number element do you want to delete?");
int wanted = int.Parse(Console.ReadLine());
FindElement(List, nrElements, wanted);
DeleteElement(List, nrElements, wanted);
for (int i = 0; i <= nrElements -1; i++)
{
Console.Write(List[i] +" ");
}
Console.ReadLine();
}
private static void DeleteElement(int[] list, int nrelement , int wanted)
{
for (int i = wanted; i <= nrelement - 2; i++)
{
list[i] = list[i + 1];
}
nrelement--;
}
public static int FindElement(int[] list, int nrElements, int wanted)
{
for (int i = 0; i <= nrElements-1 ; i++)
{
if (list[i] == wanted)
{ return i; }
else if (list[i] != wanted)
{ return -1; }
}
return 0;
}
解决方案
private static void DeleteElement(int[] list, int nrelement , int wanted)
{
for (int i = wanted; i <= nrelement - 2; i++)
{
list[i] = list[i + 1];
}
nrelement--;
}
在上面的代码中,nrelement
是一个 int,因此是一个结构,其值被传递给方法。在方法中更改它的值不会影响方法之外的任何内容。
nrelement
一个直接的解决方案是作为参数传递ref
,或者您可以返回 的值nrelement
,并让调用者使用该值。但是,重新考虑如何处理数组(例如使用List<>
)的整体设计最终可能是一个更好的解决方案。
推荐阅读
- python-3.x - Windows Python 3.7 上的 pyrebase 安装失败
- c++ - 使用与构造函数中矩阵的列相对应的索引填充向量的最有效方法?
- drupal-8 - 如何加快 ddev Drupal 8 项目的前几页速度?
- r - 如何在 httr 包中传递 curl -F 参数?
- r - 在数据集中搜索名称模式
- git - 我必须在 Visual Studio 2017 中安装 git 吗?
- c# - 报告我的软件无法在 Windows 7 / 32 位上运行
- wordpress - 默认情况下,如何使 wordpress 中的 elementor 模板在每个页面上都能正常工作?
- swift - 如何正确安装“RxSwift”模块?
- android - 片段中的项目标题在 Android Studio 中显示网站名称的 URL - 主/详细流程