我一直在假设if ... else if
语句被短路的情况下进行编程。也就是说,如果一个条件满足该if
语句,则该else if
语句不会被访问。我的一个程序中最近的行为使这一点受到质疑。下面是代码,它遍历一个数组并检查数组中的每个值是否与其索引 +1 匹配:
int[] boardCopy = this.getBoard();
int length = boardCopy.length;
for (int i = 0; i < length; i++) {
//blank space must be in last position
if (boardCopy[i] == 0 && i != length -1) return false;
//out of order if value does not match index + 1 (zero indexed)
else if (boardCopy[i] != i +1) {
System.out.println("Out of order: " + boardCopy[i] + ", " + (i+1));
return false;
}
}
return true;
这是我正在测试的数组:
int[] blocks = {1, 2, 3, 4, 5, 6, 7, 8, 0};
当我创建一个有序的板时(值匹配索引 + 1 并且 0 在最后一个位置),它返回false
. 我的打印语句显示该else if
语句正在检查 0 位置,即使if
语句逻辑已满足。
我对if/elseif
逻辑流程的整个概念不正确吗?我的代码视图会被打破吗?