C# 如何从列表中打印几个最低的数字?

C# 如何从列表中打印几个最低的数字?,c#,numbers,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

我编写了以下代码:

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();
}
static void Main(字符串[]args)
{
int num1=0;
对于(int i=-1;i<10;i++)
{
控制台。写(“”);
如果(num1<-1)
{
WriteLine(“您输入的数字小于-1,请输入更高的数字”);
控制台。写(“”);
}
num1=int.Parse(Console.ReadLine());
}
Console.Read();
}
用户可以输入他想要的任何数字,只要该数字高于-1 (数字-1也可以由用户写入) 然后我需要打印最低的4个数字(不包括-1),例如: 用户输入:200、10、50、-1、5、6、2、8、3 它将打印:2,3,5,6

感谢你们的帮助:)


谢谢

仅当数字大于-1时,才将它们存储在列表中,然后在末尾执行以下操作:

名单是{200、10、50、5、6、2、8、3}

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

我希望这有助于使用
Where
过滤出-1,用
OrderBy
订购其余的,然后
获取所需的

Console.WriteLine(string.Join(" ", list.Where(n => n >= 0).OrderBy(n => n).Take(4)));
注意这是使用System.Linq的

使用a对列表进行排序,然后获得最低的数字:

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

这会给你你想要的。输入
2001050-156283
将打印:
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);
}

如果用户输入:
200、10、50、-1、5、6、2、8、3
。。。它不应该打印
-1,2,3,5
?@TunZarniKyaw他想输出最低的4个>=0的数字。@ScottChamberlain。。。是的,我只是想知道输入
-1
的目的是什么,谢谢大家的回答,这是我在学校需要的东西(我刚刚开始我的编程世界)问题是我不能在我的代码中使用我们还没有学过的东西,所以我不能使用“list”或“count”,“var”来自您的解决方案。我需要达到我的解决方案与“for”循环,用户应该输入10个数字,不知何故,我应该能够打印用户输入的最低数字(没有-1),我有点迷失。。。我在forst注释中编写的代码允许用户输入我想要的数字,现在我坚持使用show the 4 lower number。我很感激你的评论:)请做你自己的家庭作业。谢谢你的回答,这是我上学需要的东西(我刚刚开始我的编程世界)问题是我不能在我的代码中使用我们还没有学过的东西,所以我不能使用你的“列表”或“计数”、“var”。我需要达到我的解决方案与“for”循环,用户应该输入10个数字,不知何故,我应该能够打印用户输入的最低数字(没有-1),我有点迷失。。。我在forst注释中编写的代码允许用户输入我想要的数字,现在我坚持使用show the 4 lower number。感谢您的评论:)@user3396397检查我的编辑。请注意,这应该在中,您可以推断如何对四个数字使用此方法。您只需增加变量的数量并将变量值移动到某个位置,谢谢!你的编辑很好,但那只会打印1个数字(最低的一个),而不是4个最低的数字。我成功地做到了这一点,但我也无法显示其他3个数字:)@user3396397你只需要再添加3个变量。这不是一个漂亮的代码,但它应该给你一个教训。我为第二个变量添加了代码,让您开始学习。如果值小于,则只需将值从一个变量移到另一个变量。另外,如果{…}
而不是
如果
低于第一个,则确保使用
else,因为它肯定会低于第二个
否则,如果
确保不会发生这种情况。@user3396397没问题!您可以通过单击绿色标记接受我的答案来解决问题
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);
}