2014-12-04 44 views
0

我想要一個WinFormApp來計算100到1000之間的素數並將它們顯示在「lb」列表框中。但我面對這個錯誤:C#中的Bool方法

WinFormApp1.Form1.pn(int)': not all code paths return a value

bool pn(int n) 
{ 
    for (int j = 2; j <= n; j++) 
    { 
     if (n % j != 0) 
      return false; 
     return true; 
    } 
} 


private void button1_Click(object sender, EventArgs e) 
{ 
    for (int i = 100; i <= 1000; i++) 
    { 
     if (pn(i) == true) 
      lb.Items.Add(i); 
    } 
} 
+4

如果您按照您致電PN(1),它會不知道該怎麼回報邏輯,如是 – 2014-12-04 20:27:12

+0

這可能是一個時間,在所有情況下使用大括號將有助於顯示邏輯以防止這個錯誤。 – 2014-12-04 21:02:06

回答

10

您只需放置在您的return true內循環錯誤。除了給出不正確的結果外,編譯器可以看到如果循環結束,將不會返回任何值,因此會出現編譯錯誤。

bool pn(int n) 
{ 
    for (int j = 2; j <= n; j++) 
    { 
     if (n % j != 0) 
      return false; 
    } 
    return true; 
} 
-1
bool pn(int n) 
{ 
    for (int j = 2; j <= n; j++) 
    { 
     if (n % j == 0) 
     { 
       return false; 
     } 

    } 
    return true; 
} 
+0

這個問題是錯誤的,而且代碼是不合邏輯的。所以如果'n%j'不是'0',那麼返回true?這使得for循環無用,可能只有'int j = 2'並檢查它。其中只檢查數字是否是偶數。 – Emz 2014-12-04 20:40:10