在c#中测试分数范围

本文关键字:范围 测试 | 更新日期: 2023-09-27 18:16:30

我试图创建一个类,在c#中测试信用评分范围。希望如果在if else语句中选择范围,那么我可以返回有效或无效。

类从另一个调用获得并存储类的分数,然后将运行分数并验证它是否被验证,在300到850的范围内,但是在我完成这个VS之前,我对我大喊了很多脏话。

Thank you

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")
        }
    }
}

在c#中测试分数范围

这段代码有几个地方非常错误。

  • 您已经将变量score定义为int类型。然后尝试通过Convert.ToString给它赋一个值,这将返回一个字符串。编译器不允许你将一种类型的值赋给完全不相关类型的变量。
  • else不接受条件,因为如果前一个if中的条件返回false,则运行。你想用花括号代替圆括号,或者你想用else if .
  • string是一个类型,而不是一个变量。说string = ???在语法上没有任何意义——你不能重新分配类型。(也许你指的是score而不是string)
  • 如果您确实打算使用else if,则需要比较操作符==而不是赋值操作符=。记住哪个是哪个的简单方法是=表示"等于",==表示"等于"(较长的运算符具有较长的含义)。
  • 随后,如果你打算使用else if,那么else if需要一个body。
  • 功能上,该函数应该测试分数是否在给定范围内(指定为300-850)。但是,您将score的值硬编码为0,因此此函数不会测试任何内容。您要么需要通过Console.ReadLine向该函数添加输入,要么更改该函数以接受参数。
  • 此外,该函数检查分数是否在特定范围内,这意味着返回值将为bool。如果函数要单独操作,它也可以有一个返回值void。但是您已经指定它的返回值为int,除非您忘记提及某些内容,否则它没有任何意义。
  • 同样,如果你想要函数有一个非空返回值,你的函数目前没有返回任何东西。
例如,您想要的代码可能看起来像这样:
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.");
    }
}

你的问题很难理解,你的示例代码没有逻辑意义。然而,我认为你正试图做这样的事情:

public bool isValid(int score) { return score >= 300 && score <= 580;}
//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";
}