配列を「全部同じ値」ではなく、規則的なパターンで埋めたいときは、Arrays.fill だけでは足りません。for文や条件分岐を組み合わせることで、繰り返しや交互のパターンを作れます。
1. 交互パターン(0と1を交互に)
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = i % 2; // 偶数なら0、奇数なら1
}
System.out.println(Arrays.toString(arr));
Java出力
[0, 1, 0, 1, 0, 1, 0, 1]
2. 繰り返しパターン(1,2,3を繰り返す)
int[] arr = new int[9];
for (int i = 0; i < arr.length; i++) {
arr[i] = (i % 3) + 1; // 1,2,3を繰り返す
}
System.out.println(Arrays.toString(arr));
Java出力
[1, 2, 3, 1, 2, 3, 1, 2, 3]
3. 等差数列パターン(2ずつ増える)
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = i * 2; // 0,2,4,6,8,10
}
System.out.println(Arrays.toString(arr));
Java出力
[0, 2, 4, 6, 8, 10]
4. 二次元配列でチェッカーパターン
int[][] board = new int[4][4];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
board[i][j] = (i + j) % 2; // 偶数なら0、奇数なら1
}
}
System.out.println(Arrays.deepToString(board));
Java出力
[[0,1,0,1],
[1,0,1,0],
[0,1,0,1],
[1,0,1,0]]
5. 三次元配列で「外側だけ1」
int size = 3;
int[][][] cube = new int[size][size][size];
for (int x = 0; x < size; x++) {
for (int y = 0; y < size; y++) {
for (int z = 0; z < size; z++) {
if (x == 0 || x == size-1 ||
y == 0 || y == size-1 ||
z == 0 || z == size-1) {
cube[x][y][z] = 1; // 外側を1
} else {
cube[x][y][z] = 0; // 内側は0
}
}
}
}
System.out.println(Arrays.deepToString(cube));
Java出力イメージ
外側が1、内側が0の立方体
✅ まとめ
- 交互パターン →
%(余り演算)を使う - 繰り返しパターン →
(i % n)で周期を作る - 数列パターン →
i * stepで増加させる - 二次元・三次元 → 添え字の組み合わせで条件を作る
