我正在尝试创建一种方法,允许您选择测试分数数组中的哪个索引。它将检查分数,并返回该分数的分数。在我的getGrade方法中,无论分数是多少,它都会返回“ NG”。
private double[] scores = new double[3];
private static int[]boundaryVals={80,72,64,60,56,52,48,40,35,30,1,0};
private static String[]grades={"A1","A2","B1","B2","B3","C1","C2","C3","D1","D2","F","NG"};
public String getGrade(int i) {
String grade = "";
for(int x=0;x<boundaryVals.length;x++) {
if(boundaryVals[x] <= i) {
grade = grades[x];
}
}
return grade;
}
答案 0 :(得分:3)
只需将循环退出条件更改为在指定成绩后终止即可。
public String getGrade(int i) {
String grade = "";
for(int x=0; x<boundaryVals.length && !grade.equals(""); x++) {
if (boundaryVals[x] <= i) {
grade = grades[x];
}
}
return grade;
}
结构更好,因为它在一个位置具有循环终止条件,而不是通过使用“ break”将其散布开来。
像往常一样,这不是一个硬性规定。对于更复杂的情况,“中断”更为清晰。这是一个品味问题。
在注释中建议,从中间循环“返回”在这种特殊情况下也不是一个坏办法。但是我认为值得指出的是,循环条件不仅限于从0到N的简单计数。
答案 1 :(得分:0)
因为最后0总是小于/等于i,所以即使80小于i,最终i也将变为"NG"
;
尝试在break;
之后添加关键字grade = grades[x];
,以在条件为真时停止循环。
答案 2 :(得分:0)
break
是您要寻找的关键字。
在循环中遇到break语句后,循环终止,并从下一条语句继续执行。
在您的代码中,循环永远不会终止,直到它到达数组中的最后一项,即0。并且0始终小于或等于i。 ;)