使用c#进行数组重复消除?

时间:2013-04-01 03:51:20

标签: c# arrays for-loop nested duplicate-removal

我这里有一个程序需要一些改进。本程序在数组中输入5个元素,如果有重复则删除。它的工作原理但问题是它将每个副本设置为零。我不想显示零。我希望它完全被摧毁和消除。我不希望出现重复的元素。这就是我所拥有的!可以使用一些帮助。谢谢。

// Gurpreet Singh
// Duplicate Program
using System;

class duplicate 
{
    static void Main() 
    {
    const int Array_Size = 5;
    int [] number = new int [Array_Size];
    int i;

    for ( i = 0; i < Array_Size; i++) 
    {
        Console.Write("Element " + i + ":    ");
        number[i] = Int32.Parse(Console.ReadLine());
        if (number[i] < 9 || number[i] > 101)
        {
            Console.WriteLine("Enter Number between 10 - 100");
            number[i] = Int32.Parse(Console.ReadLine());
        }
    }

    for (i = 0; i < Array_Size; i++)
    {
        for (int j = 0; j < Array_Size; j++) 
        {
            if (i != j)
            {
                if (number[j] == number[i])
                    number[j] = 0;
            }
        }
    }

    Console.WriteLine("Duplicate Removed:");
    for (i = 0; i < Array_Size; i++)
    {
        Console.WriteLine("Element " + i + "    " + number[i]);
    }
    Console.ReadLine();
}
}

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用Linq的Distinct方法:

number = number.Distinct().ToArray();

这将返回一个没有任何重复的新数组。

答案 1 :(得分:2)

副本显示为零,因为您在行中将副本的值指定为零

if(number[j]==number[i])
    number[j]=0

要从数组中删除元素,请使用以下代码:

if(number[j]==number[i])
{
    int k=j;
    while(k<Array_Size-1)
    {
        number[k]=number[k+1];
        k++;
    }
    Array_Size--;
}

语句Array_Size--;已完成,因此最后一个元素不会重复两次

答案 2 :(得分:1)

这是我完整的代码,我在其中添加了一些双循环语句 防止它在数组中插入重复的整数。 看看。

 class Program
 {
  static void Main(string[] args)
  {
     const int ARRAY_SIZE = 5;
     int[] ArrayTable = new int[ARRAY_SIZE];
     int Element=0;
     int a;

     for(a=0; a<ArrayTable.Length;a++)
     {

        Console.Write("Please Enter an integer (between 10-100): ");
        Element = Int32.Parse(Console.ReadLine());
        while (Element < 10 || Element > 100)
        {
           Console.Write("Try again (between 10-100): ");
           Element = Int32.Parse(Console.ReadLine());
        }

        ArrayTable[a] = Element;
        for (int b = 0; b < a; b++)
        {
           while (ArrayTable[a] == ArrayTable[b])
           {
              Console.Write("Integer Duplicated!\nTry again: ");
              Element = Int32.Parse(Console.ReadLine());
              ArrayTable[a] = Element;
              Console.WriteLine();
              while (Element < 10 || Element > 100)
              {
                 Console.Write("Try again (between 10-100): ");
                 Element = Int32.Parse(Console.ReadLine());
                 ArrayTable[a] = Element;
              }
           }
        }
     }

     for (int c = 0; c < ArrayTable.Length; c++)
     {
        Console.Write("{0} ", ArrayTable[c]);
     }
  }