8

私は配列を持っています

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

すべての要素が正であることを (最も簡単で効率的な方法で) どのように確認できますか? 少なくとも 1 つの数値が正の整数でない場合、システムは負の方法で応答します。

望ましい出力:

すべての数値が正の場合は、「すべて正」と表示されます。それ以外の場合は「間違っています」と表示されます。

私のショット

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 に答える