在 C# 中,如何检测数组中的元素何时为空? (当为空时,element = 0)
How do I detect when an element in an array is empty in C#? (When empty, element = 0)
我有一个包含 5 个整数的数组,从 1 到 5。我的作业告诉我我需要能够检测数组中是否至少有一个元素大于零。只有当所有元素都为空时,我才会说 var isEmpty 为真,然后 return 该值。
代码:
public static bool is_empty(int[] S, int n)
{
bool isEmpty = false;
for (int i = 0; i < n; i++)
{
if (S[i] != 0)
{
isEmpty = false;
}
else
{
isEmpty = true;
}
}
return isEmpty;
}
您的代码不起作用,因为它只考虑循环中元素中的最后一个元素。试试这个:Return 一旦你找到一个非空元素,数组就不是空的;否则,return 所有元素都是空的:
public static bool is_empty(int[] S, int n)
{
for (int i = 0; i < n; i++)
{
if (S[i] > 0) // negative values still count towards "being empty"
return false;
}
return true;
}
我认为 you don't need variables
你的老师意味着你不需要 bool isEmpty
,你可以像其他人说的那样使用 LINQ,但我怀疑你还不知道那是什么。
根据您的要求,您可以说 "if I encounter any non-zero value, I have all the information I need to return a response"。如果我检查了所有值,但没有发现任何非零值,我也知道如何应对。所以尝试:
for (int i = 0; i < n; i++)
{
if (S[i] != 0)
{
return false;
}
}
return true;
我不确定你为什么要输入参数 n。所以我已经删除了它。相反,我使用了一个 foreach 循环来遍历数组中的每个元素。
static bool IsEmpty(int[] S)
{
foreach (int x in S)
{
if (x != 0)
{
return false; //If any element is not zero just return false now
}
}
return true; //If we reach this far then the array isEmpty
}
试试这个
bool isEmpty = false;
int count = 0;
for(int i=0;i<n;i++){
if(S[i] == 0){
count++;
}
}
isEmpty = (count==n);
可以试试吗
S.Any(x => x != 0);
如果数组中的任何元素不等于 0,这应该给出 true。
同样,如果您需要检查数组的所有元素,您可以探索“全部”选项。
S.All(x => x == 0);
因此您的代码将是
public static bool is_empty(int[] S)
{
// return true if no element is 0
return !S.Any(x => x != 0);
// or use
return S.All(x => x == 0);
}
更好的是你也不需要创建这个方法,因为你可以直接从你调用这个方法的地方调用这个语句(除非它从多个地方调用)。
我有一个包含 5 个整数的数组,从 1 到 5。我的作业告诉我我需要能够检测数组中是否至少有一个元素大于零。只有当所有元素都为空时,我才会说 var isEmpty 为真,然后 return 该值。
代码:
public static bool is_empty(int[] S, int n)
{
bool isEmpty = false;
for (int i = 0; i < n; i++)
{
if (S[i] != 0)
{
isEmpty = false;
}
else
{
isEmpty = true;
}
}
return isEmpty;
}
您的代码不起作用,因为它只考虑循环中元素中的最后一个元素。试试这个:Return 一旦你找到一个非空元素,数组就不是空的;否则,return 所有元素都是空的:
public static bool is_empty(int[] S, int n)
{
for (int i = 0; i < n; i++)
{
if (S[i] > 0) // negative values still count towards "being empty"
return false;
}
return true;
}
我认为 you don't need variables
你的老师意味着你不需要 bool isEmpty
,你可以像其他人说的那样使用 LINQ,但我怀疑你还不知道那是什么。
根据您的要求,您可以说 "if I encounter any non-zero value, I have all the information I need to return a response"。如果我检查了所有值,但没有发现任何非零值,我也知道如何应对。所以尝试:
for (int i = 0; i < n; i++)
{
if (S[i] != 0)
{
return false;
}
}
return true;
我不确定你为什么要输入参数 n。所以我已经删除了它。相反,我使用了一个 foreach 循环来遍历数组中的每个元素。
static bool IsEmpty(int[] S)
{
foreach (int x in S)
{
if (x != 0)
{
return false; //If any element is not zero just return false now
}
}
return true; //If we reach this far then the array isEmpty
}
试试这个
bool isEmpty = false;
int count = 0;
for(int i=0;i<n;i++){
if(S[i] == 0){
count++;
}
}
isEmpty = (count==n);
可以试试吗
S.Any(x => x != 0);
如果数组中的任何元素不等于 0,这应该给出 true。
同样,如果您需要检查数组的所有元素,您可以探索“全部”选项。
S.All(x => x == 0);
因此您的代码将是
public static bool is_empty(int[] S)
{
// return true if no element is 0
return !S.Any(x => x != 0);
// or use
return S.All(x => x == 0);
}
更好的是你也不需要创建这个方法,因为你可以直接从你调用这个方法的地方调用这个语句(除非它从多个地方调用)。