如何检查数组中的所有元素是否为正整数?

时间:2013-05-09 05:40:43

标签: c# linq

我有一个数组,比如说

int[] array = new int[] { 1, 5, 11, 5 };

如何检查(以最简单有效的方式)所有元素都是正面的?如果至少有一个数字不是正整数,系统将以否定方式响应。

期望的输出:

如果所有数字都是正数,那么它将显示“All Positive”,否则为“Wrong”

我的镜头

int[] array = new int[] { 1, 5, 11, 5 };
var x = array.All(c => c >= '0' && c <= '9');
if (x == true) "Positive" else "Wrong";

5 个答案:

答案 0 :(得分:12)

你以前几乎就在那里 - 但你是在与人物而不是整数进行比较。

如果您想检查一切是否严格正确,请使用:

bool allPositive = array.All(x => x > 0);

如果你真的想要检查它们都是非负的(即0是可以接受的),请使用:

bool allNonNegative = array.All(x => x >= 0);

你一定要考虑你想用0做什么,因为你的问题陈述实际上是矛盾的。 (“所有积极的”和“没有消极的”不是一回事。)

请注意,就像Any一样,All会在知道结果后立即退出 - 因此,如果第一个值为负数,则无需查看其余值。

答案 1 :(得分:5)

使用Enumerable.Any之类的:

if(array.Any(r => r < 0))
{
     //Negative number found
}
else
{
   //All numbers are positive
}

或者您可以使用Enumerable.All赞:

if(array.All(r => r > 0))
{
    //All numbers are positive 
}
else
{
   //Negative number found
}

答案 2 :(得分:3)

你几乎就在那里。但在你的情况下,你比较字符而不是整数,这在你的情况下是错误的。

使用Enumerable.All之类的;

  

确定序列的所有元素是否满足条件。

int[] array = new int[] { 1, 5, 11, 5 };
bool allPositive = array.All(x => x > 0);
Console.WriteLine(allPositive);

这是DEMO

请记住0不是正面的。

答案 3 :(得分:1)

以下是解决问题的C#解决方案(在性能方面应该相当高效):

int[] array = new int[] { 1, 5, 11,5 };

bool _allPositive=true;

for (int i=0;i<array.length;i++){
 if(array[i]<0 {_allPositive=false; break;}
}

bool _allPositive表示结果(如果您愿意,可以使用字符串var)。从本质上讲,相同的语法可以应用于类Java语言,包括脚本。

答案 4 :(得分:1)

string result = array.Any(x => x < 0)?"Wrong":"Positive";