包含 if 语句的 for 循环不会再次循环

For loop containing if statements does not loop again

下面的方法接收 student 数组和 topStudentIndex 之前用另一种方法计算的值。

我的数组中有多个对象。但是for循环只循环了一次,直接返回了第一个值

我不知道为什么 for 循环停止了,即使我的 st.length 超过了

public static int computeNextHighestOverallStudentIndex(Student[] st, int topStudentIndex) {

    double nextHighestOverall= 0;
    int nextHighestStudentIndex = 0;
    for (int i = 0; i < st.length; i++) {
            if ((st[i] != null) && (!(i == topStudentIndex))){
                double studentOverall = st[nextHighestStudentIndex ].getOverall();
                if (studentOverall > nextHighestOverall) {
                    nextHighestOverall= studentOverall;
                    nextHighestStudentIndex = i;
                }
            }
        }
    return nextHighestStudentIndex ;
}

看起来像

double studentOverall = st[nextHighestStudentIndex ].getOverall();

应该是

double studentOverall = st[i].getOverall();

因为您想检查数组中的所有学生,而不仅仅是第一个学生(st[nextHighestStudentIndex ] 将始终 return 第一个学生,因为您将 nextHighestStudentIndex 初始化为 0) .

您想使用 st[i](而不是 st[nextHighestStudentIndex])遍历整个数组