2012-10-24 43 views
0

我想爲測試分數設置一個名爲hasPassed()的方法,但似乎無法做到這一點。正確或錯誤的方法不起作用

我得到的錯誤是:

windowsformapplication1.student.HasPassed()」不是所有的代碼路徑返回一個值

這是我的代碼:

public int YearMark 
{ 
    get { return yearMark; } 
    set { yearMark = value; } 
} 

private bool hasPassed; 
public bool HasPassed() 
{ 
    if (yearMark < 40) 
    { 
     hasPassed = false; 
    } 
    else 
    { 
     hasPassed = true; 
    } 
} 
+1

該錯誤表示它*可能*不會返回一個值。該代碼實際上甚至不嘗試*返回任何東西。 – harold

+0

您應該返回一個值,否則HasPassed()的值將始終爲false。嘗試在void'返回hasPassed;' –

+0

@ZaidMasud末尾追加下面的行 - 爲什麼這樣? –

回答

4

你忘了

,如果你喜歡你的代碼應該做這種方式返回值bool -

public bool HasPassed() 
{ 
    return yearMark >= 40; 
} 
2

顯然你是一位老帕斯卡爾用戶?在將其分配給hasPassed後,您需要實際返回值。如果你想更簡單,保持第一眼理解它

public bool HasPassed() 
    { 
     if (yearMark < 40) 
     { 
      hasPassed = false; 
     } 
     else 
     { 
      hasPassed = true; 
     } 
     return hasPassed; 

    } 

或者這樣:

public bool HasPassed() 
{ 
    if (yearMark < 40) 
    { 
     return false; 
    } 
    return true;  
} 
0

你的方法有一個bool返回值,所以你需要返回true或false,而不僅僅是設置一個名爲hasPassed的字段。更改方法返回true或裏面你如果

4

您需要返回的值返回false,試試這個:

public bool HasPassed() 
{ 
    return (yearMark >= 40) 
} 
0

的修補程序取決於您如何預期設計的作品。如果函數HasPassed()應該是返回的布爾值hasPassed,那麼你需要在代碼中明確地返回它。

public bool HasPassed() 
    { 
     if (yearMark < 40) 
     { 
      hasPassed = false; 
     } 
     else 
     { 
      hasPassed = true; 
     } 
     return hasPassed; 

    } 

但是,如果你打算爲HasPassed()只需更改私有變量hasPassed的值,而不是實際返回任何東西,你需要的函數的返回類型更改爲void

public void HasPassed() 
    { 
     if (yearMark < 40) 
     { 
      hasPassed = false; 
     } 
     else 
     { 
      hasPassed = true; 
     } 
    } 
0

你不一定需要在所有隻要你檢查什麼hasPassed是在你的調用方法來返回任何東西。

private bool hasPassed; 
public void HasPassed() 
{ 
    if (yearMark < 40) 
    { 
     hasPassed = false; 
    } 
    else 
    { 
     hasPassed = true; 
    } 
} 

public void Main() 
{ 
    HasPassed(); 
    if (hasPassed) 
    { 
     //Do something 
    } 
} 

不是我該怎麼做,但它的另一種解決方案。

相關問題