控制台打印次数过多

时间:2017-06-12 02:24:09

标签: c# arrays

我在尝试学习数组时遇到了一些问题。所以我的想法是我需要打印出数组中的唯一元素。当我运行程序时,它打印出的数量超过数组中的值数lol。如果这是一个超级简单而愚蠢的问题,我很抱歉,但我没有看到它的问题。语言是c#。

static void Main(string[] args)
    {
        int[] numbers = new int[10];
        Random random = new Random();

        for (int i = 0; i < 10; i++)
        {
            numbers[i] = random.Next(0, 10);
        }

        Array.Sort(numbers);
        foreach (var num in numbers)
        {
            Console.Write("{0}, ", num);
        }

        Console.WriteLine("");

        for (int i = 0; i < 10; i++)
        {
            for (int j = 1; j < 10; j++)
            {
                if (numbers[i] == numbers[j])
                {
                    break;
                }
                else
                {
                    Console.Write(numbers[i] + ", ");
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我不确定最后嵌套for循环的疯狂是什么。但是你可以这样做。

        int[] numbers = new int[10];
        Random random = new Random();

        for (int i = 0; i < 10; i++)
        {
            numbers[i] = random.Next(0, 10);
        }

        Array.Sort(numbers);
        foreach (var num in numbers)
        {
            Console.Write("{0}, ", num);
        }
        Console.WriteLine();
        numbers = numbers.Distinct().ToArray();
        numbers.ToList().ForEach(x => Console.Write(x + ", "));

另一个较短的选项,我把它归结为4行:

       Random random = new Random();
       int[] numbers = Enumerable.Repeat(0, 10).Select(i => random.Next(0, 10)).ToArray();
       Console.WriteLine(string.Join(", ", numbers));
       Console.WriteLine(string.Join(", ", numbers.Distinct()));