では今回は、「配列+ArrayList+多次元配列+toString / deepToString」総合バグ修正問題集(50問)」 を紹介します。
初心者~中級者向けに、「間違いを見つけて修正する形式」 に統合します。
基礎(1~10問)
問題 1
int[] arr = {1,2,3};
System.out.println(arr);
Java❌ 間違い
配列を直接出力 → アドレス表示
✅ 修正
System.out.println(Arrays.toString(arr));
Java問題 2
String[] names = {"A","B"};
System.out.println(Arrays.deepToString(names));
Java❌ 間違い
一次元配列 → deepToString は冗長
✅ 修正
System.out.println(Arrays.toString(names));
Java問題 3
int[] nums;
nums[0] = 10;
Java❌ 間違い
配列未初期化 → NullPointerException
✅ 修正
int[] nums = new int[3];
nums[0] = 10;
Java問題 4
int[] a = {1,2,3};
System.out.println(a.length());
Java❌ 間違い
length はプロパティ → メソッドではない
✅ 修正
System.out.println(a.length);
Java問題 5
int[][] table = {{1,2},{3,4}};
System.out.println(Arrays.toString(table));
Java❌ 間違い
多次元配列 → toString では子配列の中身が見えない
✅ 修正
System.out.println(Arrays.deepToString(table));
Java問題 6
int[] a = {1,2,3};
System.out.println(a[3]);
Java❌ 間違い
範囲外アクセス → IndexOutOfBounds
✅ 修正
System.out.println(a[2]);
Java問題 7
int[][] arr = new int[2][2];
arr[1][2] = 5;
Java❌ 間違い
列インデックス 2 は存在しない
✅ 修正
arr[1][1] = 5;
Java問題 8
int[][] arr = {{1,2},{3,4}};
for(int i=0;i<=arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
Java❌ 間違い
i <= arr.length → 範囲外アクセス
✅ 修正
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
Java問題 9
int[][] arr = new int[2][];
arr[0][0] = 1;
Java❌ 間違い
arr[0] が null → NullPointerException
✅ 修正
arr[0] = new int[1];
arr[0][0] = 1;
Java問題 10
int[][] arr = {{1,2},{3,4,5}};
for(int i=0;i<arr.length;i++){
for(int j=0;j<3;j++){
System.out.println(arr[i][j]);
}
}
Java❌ 間違い
arr[0] の長さは2 → arr[0][2] は範囲外
✅ 修正
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
JavaArrayList(11~20問)
問題 11
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(list.get(0)[2]);
Java❌ 間違い
配列の index 2 は存在しない
✅ 修正
System.out.println(list.get(0)[1]);
Java問題 12
ArrayList<String[]> data = new ArrayList<>();
data.add(new String[]{"A","B"});
System.out.println(Arrays.toString(data.get(0)[1]));
Java❌ 間違い
data.get(0)[1] は String → 配列ではない
✅ 修正
System.out.println(data.get(0)[1]);
Java問題 13
ArrayList<int[]> list = new ArrayList<>();
list.get(0)[0] = 10;
Java❌ 間違い
list が空 → IndexOutOfBounds
✅ 修正
list.add(new int[1]);
list.get(0)[0] = 10;
Java問題 14
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(Arrays.deepToString(list.toArray()));
Java❌ 間違い
toArray() は Object[] → deepToString でも int[] は展開されない
✅ 修正
for(int[] a : list){
System.out.println(Arrays.toString(a));
}
Java問題 15
ArrayList<int[]> list = new ArrayList<>(3);
System.out.println(list.get(0));
Java❌ 間違い
容量 3 は空リスト → IndexOutOfBounds
✅ 修正
list.add(new int[]{0});
System.out.println(list.get(0)[0]);
Java問題 16
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[2]);
System.out.println(list.get(0).length());
Java❌ 間違い
配列 length はプロパティ → メソッドではない
✅ 修正
System.out.println(list.get(0).length);
Java問題 17
ArrayList<int[]> list = new ArrayList<>();
for(int[] a : list){
a[0] = 1;
}
Java❌ 間違い
list が空 → ループ未実行
✅ 修正
list.add(new int[1]);
for(int[] a : list){
a[0] = 1;
}
Java問題 18
ArrayList<int[]> list = new ArrayList<>();
list.add(null);
System.out.println(list.get(0)[0]);
Java❌ 間違い
null → NullPointerException
✅ 修正
list.set(0,new int[1]);
System.out.println(list.get(0)[0]);
Java問題 19
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
list.remove(1);
Java❌ 間違い
IndexOutOfBounds → 要素は1個のみ
✅ 修正
list.remove(0);
Java問題 20
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(list);
Java❌ 間違い
Object[] 表示 → int[] の中身は見えない
✅ 修正
for(int[] a : list){
System.out.println(Arrays.toString(a));
}
Java多次元+ArrayList(21~30問)
問題 21
ArrayList<int[][]> list = new ArrayList<>();
list.add(new int[2][2]);
System.out.println(Arrays.toString(list.get(0)));
Java❌ 間違い
2次元配列 → toString は参照表示
✅ 修正
System.out.println(Arrays.deepToString(list.get(0)));
Java問題 22
ArrayList<int[][]> list = new ArrayList<>();
int[][] arr = {{1,2},{3,4}};
list.add(arr);
System.out.println(list.get(0)[1][2]);
Java❌ 間違い
arr[1] の長さは2 → index 2 は存在しない
✅ 修正
System.out.println(list.get(0)[1][1]);
Java問題 23
ArrayList<int[][]> list = new ArrayList<>();
list.get(0)[0][0] = 1;
Java❌ 間違い
list が空 → IndexOutOfBounds
✅ 修正
list.add(new int[1][1]);
list.get(0)[0][0] = 1;
Java問題 24
ArrayList<int[][]> list = new ArrayList<>();
list.add(new int[2][2]);
System.out.println(Arrays.toString(list.toArray()));
Java❌ 間違い
toArray() → Object[] → int[][] の中身は表示されない
✅ 修正
for(int[][] a : list){
System.out.println(Arrays.deepToString(a));
}
Java問題 25
ArrayList<int[][]> list = new ArrayList<>();
int[][] arr = new int[2][];
arr[0][0] = 1;
Java❌ 間違い
arr[0] が null → NullPointerException
✅ 修正
arr[0] = new int[1];
arr[0][0] = 1;
Java問題 26
ArrayList<int[][]> list = new ArrayList<>();
list.add(new int[2][2]);
System.out.println(list.get(0)[2][0]);
Java❌ 間違い
行インデックス 2 は存在しない
✅ 修正
System.out.println(list.get(0)[1][0]);
Java問題 27
ArrayList<int[][]> list = new ArrayList<>();
list.add(new int[2][2]);
System.out.println(list.get(0).length());
Java❌ 間違い
length はプロパティ → メソッドではない
✅ 修正
System.out.println(list.get(0).length);
Java問題 28
ArrayList<int[][]> list = new ArrayList<>();
list.add(new int[2][2]);
System.out.println(Arrays.toString(list.get(0)[0]));
Java❌ 間違い
一次元配列 → toString では中身は参照表示
✅ 修正
System.out.println(Arrays.toString(list.get(0)[0]));
Java※ この場合 toString で OK(配列1次元)
問題 29
ArrayList<int[][]> list = new ArrayList<>();
list.add(null);
System.out.println(Arrays.deepToString(list.get(0)));
Java❌ 間違い
null → NullPointerException
✅ 修正
list.set(0,new int[1][1]);
System.out.println(Arrays.deepToString(list.get(0)));
Java問題 30
ArrayList<int[][]> list = new ArrayList<>();
int[][] arr = {{1,2},{3,4}};
list.add(arr);
System.out.println(Arrays.toString(list.get(0)));
Java❌ 間違い
2次元配列 → toString は参照表示
✅ 修正
System.out.println(Arrays.deepToString(list.get(0)));
Java
