我试着从数组中提取偶数。
我觉得我快明白了,但我不断地犯这个错误,不知道该怎么做。
(int[])':并非所有代码路径都返回值
我知道我需要一个返回值,但我不想返回任何东西,只想返回if语句中的值。
If语句的基本内容是:
if (arr[i] % 2 == 0)这就是我在数组中得到均匀值的条件,这就是我想要的。
现在,根据我的研究,我需要归还一些明显的东西。但是我只想返回从if语句中得到的偶数值。我现在的代码是:
static int[] ExtractEvenNumber(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] % 2 == 0)
{
Console.Write(arr[i] + " ");
}
}
// so I need a return value here? what do I return?
//I dont want to return arr; cause it'll just repeat the arr.
}编辑:
这就是我想得到的(粗体值):
-> 4 2 6
示例数组位于左侧。
我试图返回int[];
但这会给我带来更多的错误?
问题已经解决了。谢谢大家!)
发布于 2022-11-03 14:41:42
看起来,您应该使用不需要Linq甚至List<T>的低级别代码来实现这一点。
您可以使用just循环和使用以下算法的结果数组来完成这一任务:
下面是一个示例实现-仔细阅读代码,以确保您理解每一步。
static int[] ExtractEvenNumber(int[] arr)
{
// (1) Count how many even numbers there are.
int n = 0;
foreach (int number in arr)
{
if (number % 2 == 0)
{
++n;
}
}
// (2) Create a result array of the correct size.
int[] result = new int[n];
// (3) Copy into the array all the even numbers.
// Here we use i to index where the next even number should go in the results.
int i = 0;
foreach (int number in arr)
{
if (number % 2 == 0)
{
result[i] = number;
++i; // Next even number will go into the next result element.
}
}
// (4) Return the results;
return result;
}发布于 2022-11-03 14:19:58
您在注释中说,您不能删除static int[] ExtractEvenNumber(int[] arr),因为它是分配中的默认代码,因此您必须返回一个int[]。如果没有找到任何东西,它可以是一个空数组。在C#中,您不能向int[]对象添加元素,因为不能更改它们的长度,因此我建议您使用List来临时存储找到的存储号,然后在返回结果之前将其转换为int[]:
static int[] ExtractEvenNumber(int[] arr)
{
List<int> result = new();
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] % 2 == 0)
{
result.Add(arr[i]);
Console.Write(arr[i] + " "); // Optional
}
}
return result.ToArray();
}您还可以使用foreach对数组进行迭代,因为您不需要数字的索引,而只需要值。如果你是编码新手,我认为这是最容易理解的:
static int[] ExtractEvenNumber(int[] arr)
{
List<int> result = new();
foreach (int number in arr)
{
if (number % 2 == 0)
{
result.Add(number);
Console.Write(number + " "); // Optional
}
}
return result.ToArray();
}更简单,您可以使用.Where
static int[] ExtractEvenNumber(int[] arr)
{
return arr.Where(number => number % 2 == 0).ToArray();
}https://stackoverflow.com/questions/74304449
复制相似问题