2016-11-06 58 views
-4

我正在嘗試創建一個在C#中測試信用分數範圍的類。希望如果在if else語句中選擇範圍,那麼我可以返回有效或無效。在C中測試分數範圍#

該課程是從另一個獲取和存儲類的調用拉取分數,然後運行得分並驗證是否驗證,通過在300到850的範圍內,但是在我可以完成此操作之前VS對我說了很多罵人的話。

謝謝

using System; 

namespace ConsoleApplication34 
{ 
//test score and returns valid if below 300 or above 850. 
// 
    class CreditScoreEngine 
    { 
     public int TestScore() 
     { 
      int score = 0; 
      if (score >= 300 && score <= 850) 
       score = Convert.ToString("valid") 
      else (string = "invalid") 
     } 
    } 
} 
+2

什麼是你的問題? 「VS對我說了很多罵人的話」 - 我真的懷疑是這樣。閱讀和理解錯誤消息是解決問題的第一步 - 並將您遇到問題的錯誤消息複製到問題中,這是在SO上獲得有用答案的第一步。 –

+1

你在你的問題中唯一顯示的是你有一個永不會開火的if語句。除了渴望做你描述的事情之外,你不會給這裏的優秀人員這樣做,因爲他們可以用它來爲你提供答案。 – nocturns2

+0

我的目標是能夠創建一個範圍,然後如果範圍滿意返回一個有效值,那麼範圍之外的其他任何內容都將無效。然後,我可以在另一個班級做其他事情。 – David

回答

0

你提的問題是很難跟蹤和您的示例代碼沒有任何邏輯意義。但是,我認爲你正在嘗試做這樣的事情:

public bool isValid(int score) { return score >= 300 && score <= 580;} 
+0

謝謝,對於SO和C#編碼都是新手。 – David

0
//rewrite the code using this 
public string TestScore(int score) 
{ 
    //I believe it would be more appropiate if you would return a boolean 
    //instead of a string. 

    return (score>=300 && score<=850)?"valid":"invalid"; 
} 
1

有幾件事情是如此非常錯誤與此代碼。

  • 您已將變量score定義爲int。然後嘗試通過Convert.ToString爲其分配值,該值返回一個字符串。編譯器將不允許您將一種類型的值分配給完全不相關類型的變量。
  • else如果前面的if中的條件返回false,它將不會執行條件運行。你要麼使用花括號代替圓括號,要麼使用else if
  • string是一種類型,而不是一個變量。說string = ???沒有任何語法意義 - 你不能重新分配一個類型。 (也許你的意思score而不是string。)
  • 如果你沒有打算用一個else if,所需要的比較操作==,而不是賦值運算符=。一個簡單的方法來記住哪個是=意味着「等於」,而==意味着「等於」(較長的運算符具有較長的含義)。隨後,如果你打算使用else if,那麼else if需要一個身體。
  • 從功能上來說,此功能應該測試分數是否在給定範圍內(指定爲300-850)。但是,您將score的值硬編碼爲0,所以此函數不會進行任何測試。您可能需要通過Console.ReadLine將輸入添加到此功能,或更改函數以獲取參數。
  • 此外,此功能檢查得分是否在特定範圍內,這意味着返回值將是bool。如果函數是爲了自己操作,它也可能有一個返回值void。但是你已經指定它的返回值爲int,除非你忘記提及的東西沒有任何意義。
  • 另外,如果你想函數有一個非void返回值,你的函數目前不返回任何東西。

例如,你想要的代碼可能是這個樣子:

public bool TestScore(int score) 
{ 
    if (score >= 300 && score <= 850) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

或者,它可能是這樣的:

public void TestScore() 
{ 
    string input = Console.ReadLine(); 
    int score; 

    if (int.TryParse(input, out score)) 
    { 
     if (score >= 300 && score <= 850) 
     { 
      Console.WriteLine("The score passes."); 
     } 
     else 
     { 
      Console.WriteLine("The score fails."); 
     } 
    } 
    else 
    { 
     Console.WriteLine("The score is not in the correct format."); 
    } 
}