私は、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
間違っていますか? 私のコードビューは粉砕されようとしていますか?