如何在case语句中使用范围?

本文关键字:使用范围 语句 case | 更新日期: 2023-09-27 18:13:03

我想知道我在这里做错了什么:

string grade;
switch (percentageMark)
{
    case (90 - 100):
        grade = "A*";
        break;
    case (80 - 89):
        grade = "A";
        break;
    case (70 - 79):
        grade = "B";
        break;
    case (60 - 69):
        grade = "C";
        break;
    case (50 - 59):
        grade = "D";
        break;
    case (40 - 49):
        grade = "E";
        break;
    case (0 - 39):
        grade = "U";
        break;
}

我得到的错误说"标签'case -9:'已经出现在这个开关语句中",但只在案例3,4,5和6。谁能告诉我为什么我得到这些错误

如何在case语句中使用范围?

不能设置大小写

必须使用多个大小写,如:

case 90:
case 91:
case 92:
case 93:
case 94:
...
...
case:100:
        grade = "A*";

或者你也可以使用if语句来应用range:

if(percentageMark >= 90 && percentageMark <=100)
   grade = "A*";

正如Ehsan已经指出的,您不能在case中使用range。在您的情况下,看起来使用if..else而不是switch case会更好。

:

if(percentageMark >= 90 && percentageMark <=100)
   grade = "A*";
else if(percentageMark >= 80)
   grade = "A";
else if(percentageMark >= 70)
   grade = "B";
else if(percentageMark >= 60)
   grade = "C";
else if(percentageMark >= 50)
   grade = "D";
else if(percentageMark >= 40)
   grade = "E";
else
   grade = "U";

遗憾的是,c#的开关不支持范围。

你必须使用if和else if。

在你的代码中应该是这样的:

if (value >= 90 && value <= 100)
{
    // Your code
}
else if (value >= 80 && value < 90)
{
    // Your code
}
else if (value >= 70 && value < 80)
{
    // Your code
}

等。

当然,如果你想使用一个开关,并且分数总是在0到100之间,那么你可以使用这个开关:

switch(grade)
{
    case grade > 90:
        // A*
        break;
    case grade > 80:
        // B
        break;
}

等。