我有一个数组,比如说
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";
答案 0 :(得分:12)
你以前几乎就在那里 - 但你是在与人物而不是整数进行比较。
如果您想检查一切是否严格正确,请使用:
bool allPositive = array.All(x => x > 0);
如果你真的想要检查它们都是非负的(即0是可以接受的),请使用:
bool allNonNegative = array.All(x => x >= 0);
你一定要考虑你想用0做什么,因为你的问题陈述实际上是矛盾的。 (“所有积极的”和“没有消极的”不是一回事。)
答案 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";