8

我有一个数组,说

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";
4

5 回答 5

16

你之前几乎在那里 - 但你正在与字符而不是整数进行比较。

如果要检查所有内容是否严格肯定,请使用:

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

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

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

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

请注意,就像Any,All将在知道结果后立即退出 - 所以如果第一个值为负数,则不需要查看其余部分。

于 2013-05-09T05:45:28.760 回答
6

使用Enumerable.Any 之类的:

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

或者你可以使用Enumerable.All Like:

if(array.All(r => r > 0))
{
    //All numbers are positive 
}
else
{
   //Negative number found
}
于 2013-05-09T05:43:55.593 回答
3

你快到了。但是在您的情况下,您比较的是字符而不是整数,这在您的情况下是错误的。

使用Enumerable.All喜欢;

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

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

这是一个DEMO.

记住0不是积极的。

于 2013-05-09T05:44:49.650 回答
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 的语言,包括脚本。

于 2013-05-09T05:47:14.237 回答
1
string result = array.Any(x => x < 0)?"Wrong":"Positive";
于 2013-05-09T05:53:49.813 回答