在第二个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;
}
答案 0 :(得分:1)
这不会在运行时抛出错误的唯一方法是将空数组作为方法参数传递,在这种情况下,for
循环不会执行。另外,正如Bhesh所建议的,如果数组有一个元素且minIdx
是索引0处的第一个元素,则循环将执行一次,输入第一个if
和continue
。它会在此之后停止循环。这也不会导致例外。