对于包含if语句的循环不再循环

时间:2015-03-29 07:50:46

标签: java arrays for-loop netbeans

下面是一个方法,它接收student数组和之前由另一个方法计算的值的topStudentIndex

我的数组中有多个对象。但是,for循环只能循环一次,并且它会立即返回第一个值。

即使我的st.length超过

,我也不知道为什么for循环停止了
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 ;
}

2 个答案:

答案 0 :(得分:1)

看起来像是

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

应该是

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

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

答案 1 :(得分:1)

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