问题:如果获得的分数低于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)