Предположим, у меня есть матрица int[size][size]. Я хочу повторить это так:
01 02 03 04
08 07 06 05
09 10 11 12
16 15 14 13
Я действительно должен сказать:
for (int y=0; y<size; y++) {
int startIndex, endIndex, increment;
boolean lessThan;
if (y%2 == 0) {
startIndex = 0;
endIndex = size;
lessThan = true;
increment = 1;
}
else {
startIndex = size-1;
endIndex = -1;
lessThan = false;
increment = -1;
}
for (int x=startIndex; lessThan ? x<endIndex : x>endIndex; x+=increment) {
// Process element
}
}
чтобы этого не делать:
for (int y=0; y<size; y++) {
if (y%2 == 0) {
for (int x=0; x<size; x++) {
// Process element
}
}
else {
for (int x=size-1; x>-1; x--) {
// Process element
}
}
}
что намного приятнее, но повторяет код. Есть ли лучший способ структурировать это?