如何从列表中打印少数最小数字?

时间:2014-03-08 16:00:00

标签: c# numbers

我写了以下代码:

static void Main(string[] args)
{
    int num1 = 0;

    for (int i = -1; i < 10; i++)
    {
        Console.Write("   ");
        if (num1 < -1)
        {
            Console.WriteLine("You entered a number less than -1, please enter higher number");
            Console.Write("   ");
        }
        num1 = int.Parse(Console.ReadLine());

    }

    Console.Read();
}

只要数字高于-1,用户就可以输入他想要的任何数字 (数字-1也可以由用户写) 比我需要打印4个最低的数字(并不包括-1作为其中之一),例如: 用户输入:200,10,50,-1,5,6,2,8,3 将打印:2,3,5,6

非常感谢你的帮助:)

由于

4 个答案:

答案 0 :(得分:3)

使用Where过滤-1,使用OrderBy订购其余内容,然后Take订购所需内容。

Console.WriteLine(string.Join(" ", list.Where(n => n >= 0).OrderBy(n => n).Take(4)));

请注意,这是在您的命名空间中使用using System.Linq;

答案 1 :(得分:1)

使用List(T).Sort()对列表进行排序,然后获得最低的数字:

static void Main(string[] args)
{
    int num1 = 0;
    List<int> numbers = new List<int>();

    for (int i = -1; i < 10; i++)
    {
        Console.Write("   ");
        if (num1 < -1)
        {
            Console.WriteLine("You entered a number less than -1, please enter higher number");
            Console.Write("   ");
            i--;
        }

        else
        {
            num1 = int.Parse(Console.ReadLine());
            numbers.Add(num1);
        }
    }


     //sorting
    numbers.Sort(); 
    int amountCounted = 0;
    for (int i = 0; i < numbers.Count && amountCounted < 5; i++)
    {
        if (numbers[i] > -1)
        {
            Console.WriteLine(numbers[i]);
            amountCounted++;
        }
        else
            i++;
    }
    Console.Read();
}

此代码将循环,检查数字是否为-1,如果不是,则打印它并递增amountCounted变量。

注意:List(T)需要System.Collections.Generic命名空间。

修改

根据您的评论,您将使用另一个变量来保持最低值。 Examle:

static void Main(string[] args)
{
    int num1 = 0;
    int lowestNumber = 2147483647;//Max int value:)
    int secondLowest = 2147483647;        

    for (int i = -1; i < 10; i++)
    {
        Console.Write("   ");
        num1 = int.Parse(Console.ReadLine());
        if (num1 < -1)
        {
            Console.WriteLine("You entered a number less than -1, please enter higher number");
            Console.Write("   ");
        }

        else
        {
            if (num1 < lowestNumber && num1 > -1)
            {
                secondLowest = lowestNumber;
                lowestNumber = num1;
            }

            else if (num1 < secondLowest && num1 > -1)
                secondLowest = num1;
        }
    }

    Console.WriteLine(lowestNumber);
    Console.Read();
}

答案 2 :(得分:0)

只有当数字大于-1时才存储在List中,然后在最后,执行以下操作:

列表是{200,10,50,5,6,2,8,3};

Console.WriteLine(string.Join(" ", list.OrderBy(x => x).Take(4).Select(x => x.ToString()).ToArray<string>()));

我希望这会有所帮助

答案 3 :(得分:0)

这会给你你想要的。输入200 10 50 -1 5 6 2 8 3将打印:2, 3, 5, 6

void Main()
{
    Console.WriteLine("Please enter some numbers seperated by a space");
    Console.WriteLine("");

    var userInput = Console.ReadLine();
    var numbers = userInput.Split(' ');

    var lowestNumbers = numbers.Where(n => int.Parse(n) > -1).OrderBy(n => int.Parse(n)).Take(4).ToList();
    var output = string.Join(", ", lowestNumbers);
    Console.WriteLine(output);
}