如果满足if循环内部条件,如何退出for循环

时间:2020-10-29 11:48:24

标签: java

我正在尝试创建一种方法,允许您选择测试分数数组中的哪个索引。它将检查分数,并返回该分数的分数。在我的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;
    }

3 个答案:

答案 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。 ;)