我剛剛學習了方法聲明,我不知道如何使用它,我試圖做一個算法,需要2個數字並返回其最小值常見的鴻溝,如果沒有共同的分頻器,返回-1,這就是代碼:並非所有的代碼路徑都返回一個值,但無論如何都有值返回
class Program
{
static int Div(int a, int b)
{
int max = Math.Max(a, b);
bool div = false;
for(int i = 2; i <= max/2; i++)
{
if (a % i == 0 && b % i == 0)
{
return i;
div = true;
i = max;
}
}
if (div == false)
{
return -1;
}
}
static void Main(string[] args)
{
Console.WriteLine("Please Enter 2 Numbers");
int num = int.Parse(Console.ReadLine());
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine(Div(num, num2));
}
}
它告訴我,有一個無法訪問的代碼,而不是所有的代碼路徑返回一個值,但爲什麼呢?如果我得到2個數字,確實有一個commong divider它會返回它,如果不是它將返回-1,沒有任何遺漏,我認爲,在此先感謝
'div = true; i = max;'由於在'return'之後無法訪問。這些行永遠不能執行。 – ADyson
你的'Div'函數不能保證返回一個值。可能沒有達到任何'return'語句。 – Amy
你有幾個問題...首先在你的for循環中,return語句之後的代碼將不會被觸發,因爲return語句將停止函數內的進一步處理並返回'i'的值。其次,如果你的for循環中的條件不符合,你不需要將最終返回值包含在條件中,這是拋出編譯器的原因。編譯器不知道div肯定是錯誤的,所以警告你有可能沒有任何東西從函數返回 - 刪除條件,這個問題就會消失。 – Diado