我目前正在查看MIT的Java课件,不确定为什么要涉及一段代码。我尝试删除代码以确定是否必要,并阻止程序运行。

我有两个数组,一个是跑步者的名字,另一个是他们的时代。目标是找到时间最短(最快)的索引,然后再给时间第二快的人。即命令提示符将输出john是最快的,而kate是第二快的

我感到困惑的部分是“ secondIndex == -1 ||” ---这是为什么呢?如果我删除它我得到错误

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:-1

public static int getSecondIndex(int[] values) {
    int minIndex = getMinIndex(values);
    int secondIndex = -1;

    for(int i = 0; i < values.length; i++) {
        if(i == minIndex){
            continue;
        }
        if(secondIndex == -1 ||
            values[i] < values[secondIndex]) {
            secondIndex = i;
        }
    }
        return secondIndex;
}

最佳答案

然后它将评估在索引-1上没有条目的values[secondIndex]||从左到右短路,因此在secondIndex = -1的情况下,将永远不会评估values[secondIndex]

09-11 18:10