我的代码应该将分数转换为字母等级,所以我使用if语句。只是想知道是否有一种方法可以使用switch语句而不是if语句。我不知道如何转换它。还有,一个比另一个好吗?
public static void determineGrade(int numArray[], char letterArray[]) {
int scoreCount = numArray.length;
for (int i=0; i < scoreCount; i++) {
if (numArray[i] >= 90 && numArray[i] <=100) {
letterArray[i] = 'A';
}
if (numArray[i] >= 80 && numArray[i] < 90) {
letterArray[i] = 'B';
}
if (numArray[i] >= 70 && numArray[i] < 80) {
letterArray[i] = 'C';
}
if (numArray[i] >= 60 && numArray[i] < 70) {
letterArray[i] = 'D';
}
if (numArray[i] >= 0 && numArray[i] < 60) {
letterArray[i] = 'F';
}
}
displayTestScores(numArray, letterArray);
答案 0 :(得分:1)
public char getGrade(int input){
switch(input/10)
{
case 9: return 'A';
case 8: return 'B';
case 7: return 'C';
case 6: return 'D';
default: return 'F';
}
}
然后
for (int i=0; i < scoreCount; i++) {
letterArray[i] = getGrade(numArray[i]);
}
答案 1 :(得分:0)
您的条件是范围。 Java switch
语句包含值的大小写,而不是范围。
由于您的案例数量有限,您可以单独列出每一个案例。但是,这会使您的代码多更长,有100个案例。
还有一些数学技巧可以找到可被10整除的较低数字,并打开它。但是if
语句更易于实现和阅读。
所有这一切,如果您使用if
语句而不是独立的else
,则if
语句中的第二个表达式是不必要的。并且你想使用else
,因为在符合条件的第一个案例之后继续检查所有剩余案例是愚蠢的。
if (numArray[i] >= 90 ) { // Can you have values > 100?
letterArray[i] = 'A';
}
else if (numArray[i] >= 80 ) { // If we're checking this, we know numArray[i] < 90
letterArray[i] = 'B';
}
else if ...
答案 2 :(得分:0)
你可以在这种情况下切换声明,但我不推荐,因为你会有太多的情况。由于您的if语句条件,您将使用至少100个案例进行输入。
case 100 ://code
break;
case 50 ://skip a bit
case 0 :
案件太多,浪费时间和精力。
答案 3 :(得分:-1)
您正在寻找生成具有基于范围的案例的switch语句。它并不是真正意义上的switch语句。如果路线更优雅/更好的解决方案imo。
In Java,Using switch statement with a range of value in each case?