首页 > 解决方案 > 删除和查找数组中的元素

问题描述

我只想知道如何解决我的代码中的一个小问题......当它删除我想要的元素时,输出会复制数组中的最后一个元素。有什么建议么?

这是代码:

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;
}

标签: c#arrays

解决方案


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<>)的整体设计最终可能是一个更好的解决方案。


推荐阅读