问题:如果获得的分数低于35,仍然获得B级

在数据库中存储一个描述评分系统的数组

无法使用开关盒,因为不同的类别将具有不同的评分系统

String[] gradeDetails = {A,60,100,
                         B,45,59.99,
                         C,35,44.99,
                         D,0,34.99};


推论成绩的逻辑是

int j=0;
while (j<gradeDetails.length/3){
    grade = gradeDetails[j++];
    min = Float.parseFloat(gradeDetails[j++]);
    max = Float.parseFloat(gradeDetails[j++]);
    if(marksObtained >= min && marksObtained <= max)
        break;
}



解决了


只是对不同的增量使用了不同的变量

j=0;
k=0;
while (k<gradeDetails.length/3){
    grade = gradeDetails[j++];
    min = Float.parseFloat(gradeDetails[j++]);
    max = Float.parseFloat(gradeDetails[j++]);
    if(marksObtained >= min && marksObtained <= max)
        break;
    k++;
}


没想到解决方案会如此愚蠢。谢谢大家

最佳答案

问题在于您的while表达。
j每个循环增加3(因为您执行j++ 3次)。
因此,在第二个循环之后,它等于5,大于长度除以3(4)的长度,因此您不在循环中。

您应该只使用while j < (gradeDetails.length)

09-27 00:34