我写了以下代码:
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
非常感谢你的帮助:)
由于
答案 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);
}