我想知道我在这里做错了什么:
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;
}
我收到的错误是"标签'案例-9:'已经出现在这个switch语句"中,但仅限于案例3,4,5和6.有人可以告诉我为什么我会收到这些错误
答案 0 :(得分:4)
你不能拥有范围。
你必须使用多个案例,如:
case 90:
case 91:
case 92:
case 93:
case 94:
...
...
case:100:
grade = "A*";
或者您可以使用if语句来应用范围:
if(percentageMark >= 90 && percentageMark <=100)
grade = "A*";
答案 1 :(得分:3)
由于Ehsan已经指出你不能在范围内使用范围。在您的情况下,使用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";
答案 2 :(得分:1)
可悲的是,C#的开关不支持范围。
你必须使用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;
}
等