java - 如何在方法中使用 switch 语句,以便该方法可以返回一个 char 值,该值由其中的 switch 语句获取?
问题描述
该方法假设计算获得的分数的平均值并相应地返回分数。我如何将成绩从 switch() 传递到 calculate() 以便它可以返回正确的成绩?
public char calculate(){
int count=0;
int total = 0;
for (int x: testScores){
total = total + x;
count++;
}
int grade = total/count;
switch(grade){
case (1): if (grade>=90) return 'O';
break;
case(2): if (grade>=80 && grade<90) return 'E';
break;
case (3): if (grade>=70 && grade<80) return 'A';
break;
case (4): if (grade>=55 && grade<70) return 'P';
break;
case (5): if (grade>=40 && grade<55) return 'D';
break;
case (6): if (grade<40) return 'E';
break;
}
return //what should i return here??
}
我知道如何在没有 switch() 的情况下做到这一点,但我认为也可以这样做。请告诉我我错过了什么?
解决方案
在您的开关中,您跳转到不同的部分,检查是否grade
为 1、2、3 等。但是然后您将其与 0 到 100 范围内的值进行比较?那是永远无法解决的。
但是你根本不需要switch,你可以使用一系列if
语句
public char calculate(){
int count=0;
int total = 0;
for (int x: testScores){
total = total + x;
count++;
}
int grade = total/count; //what if count is 0?
if (grade>=90) return 'O';
if (grade>=80) return 'E';
if (grade>=70) return 'A';
if (grade>=55) return 'P';
if (grade>=40) return 'D';
return 'E';
}
并且确保覆盖了when count
is 0的情况,我这里没有做过,因为我不知道那应该是什么结果。