如何在数组C#中找到正的最小数字

时间:2015-03-13 09:11:40

标签: c#

如何才能在数组C中找到正的最小数字# 我使用Console.WriteLine(“最小号是{0}”,myarray.Min())

2 个答案:

答案 0 :(得分:3)

假设int[]作为输入:

int minPosNum = myarray.Where(i => i > 0).Min();

如果没有正数,则抛出InvalidOperationException。因此,您可以使用DefaultIfEmpty代替此方法:

int minPosNum = myarray.Where(i => i > 0).DefaultIfEmpty(int.MinValue).Min();

这里有作业答案,请使用循环:

int minPosNum = int.MaxValue;
foreach (int i in myarray)
    if (i > 0 && i < minPosNum)
        minPosNum = i;

此循环只有一个问题:如果结果为int.MaxValue,您就不知道是否存在正数,因为这可能意味着没有,或者只有int.MaxValue在数组中。然后你可以使用这种笨拙的方法:

int minPosNum = int.MaxValue;
bool positiveNumberFound = false;
foreach (int i in myarray)
{
    if (i > 0) 
    {
        positiveNumberFound = true;
        if(i < minPosNum) minPosNum = i;
    }
}

答案 1 :(得分:1)

只需使用Where消除Min之前的负数:

myarray.Where(x => x >= 0).Min()