我是c#的新手,我只想通过改变它来清理它。
int studTempGrade = Console.ReadLine();
if (studTempGrade >= 90 & studTempGrade <= 200)
{
aGrades= aGrades+1;
}
if (studTempGrade >= 80 & studTempGrade <= 89)
{
bGrades = bGrades + 1;
}
if (studTempGrade >= 70 & studTempGrade <= 79)
{
cGrades = cGrades + 1;
}
if (studTempGrade >= 60 & studTempGrade <= 79)
{
dGrades = dGrades + 1;
}
if (studTempGrade >= 0 & studTempGrade <= 59)
{
fGrades = fGrades + 1;
}
答案 0 :(得分:1)
不幸的是,使用switch语句确实没有一种简单的方法可以做到这一点。切换案例只允许常量表达式,而不是通常的表达式。意思是,你不能做这样的事情:
switch(val)
{
case 0 - 9:
doThis();
break;
case 10 - 20:
doThat();
break;
default:
break;
}
C#不允许这样的事情,尽管它会很好。要通过开关实现您想要的效果,您必须放下所有200个案例(即0到200之间的等级值)。意思是,你会有这个:
switch(value) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
// do something
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
// do something
break;
case 21:
case 22:
case 23:
case 24:
case 25:
// ...and so on, you get the idea...
}
你这样做的方式很好,if
语句没有错。但是,我建议将else if
用于后续的if
语句。所以你会有这个:
int studTempGrade = Console.ReadLine();
if (studTempGrade >= 90 & studTempGrade <= 200)
{
aGrades= aGrades+1;
}
else if (studTempGrade >= 80 & studTempGrade <= 89)
{
bGrades = bGrades + 1;
}
else if (studTempGrade >= 70 & studTempGrade <= 79)
{
cGrades = cGrades + 1;
}
else if (studTempGrade >= 60 & studTempGrade <= 79)
{
dGrades = dGrades + 1;
}
else if (studTempGrade >= 0 & studTempGrade <= 59)
{
fGrades = fGrades + 1;
}
这将导致您的程序在第一个导致if
的表达式后离开true
结构,从而节省时间。