Java:负索引和OR逻辑运算符

时间:2014-06-05 20:12:18

标签: java

在第二个if语句中,当我比较值[i]和值[secondIdx]时,为什么这不会导致错误,因为secondIdx等于-1?

public static int getSecondMinIndex(int[] values) {
        int secondIdx = -1;
        int minIdx = getMinIndex(values);
        for (int i = 0; i < values.length; i++) {
            if (i == minIdx)
                continue;
            if (values[i] < values[secondIdx] || secondIdx == -1)
                secondIdx = i;
        }
        return secondIdx;
}

1 个答案:

答案 0 :(得分:1)

这不会在运行时抛出错误的唯一方法是将空数组作为方法参数传递,在这种情况下,for循环不会执行。另外,正如Bhesh所建议的,如果数组有一个元素且minIdx是索引0处的第一个元素,则循环将执行一次,输入第一个ifcontinue。它会在此之后停止循环。这也不会导致例外。