我正在嘗試從陣列中提取偶數。
我覺得我快要明白了,但我一直收到這個錯誤,不知道該怎么辦。
(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 1 2 5 6 1 3 ] -> [ 4 2 6 ]
示例陣列在左側。
我試圖回傳 int[];
但它給了我更多的錯誤?
在此處輸入影像描述
問題已解決。謝謝大家!:)
uj5u.com熱心網友回復:
看起來您應該使用不需要 Linq 甚至List<T>.
您可以使用以下演算法僅使用回圈和結果陣列來執行此操作:
- 確定回傳的陣列中有多少個數字。您可以通過回圈輸入陣列并計算偶數的數量來做到這一點。您需要知道這一點,因為您想創建一個正確大小的陣列來保存所有結果。
- 創建一個您剛剛計算的大小的結果陣列。
- 再次回圈輸入,這次將每個偶數添加到結果陣列中。您可以使用計數器(整數變數)作為索引,在將每個偶數添加到結果后遞增,這樣您就知道每個新數字應該在結果陣列中的位置。
- 最后,您可以回傳結果陣列。
這是一個示例實作 - 仔細閱讀代碼以確保您理解每個步驟。
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;
}
uj5u.com熱心網友回復:
你在評論中說你不能洗掉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://www.uj5u.com/gongcheng/526601.html
標籤:C#数组提炼
下一篇:如何添加到陣列的每個元素
