Java | 多次元配列+ArrayList:バグ修正問題集

Java
スポンサーリンク

では今回は、「多次元配列+ArrayList版のバグ修正問題」20問 を紹介します。
配列と ArrayList を混ぜた問題で、初心者〜中級者向けに 間違いを見つけて修正する形式 にしています。

問題 1

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(list.get(0)[2]);
Java

❌ 間違い

配列の長さは2 → index 2 は存在しない

✅ 修正

System.out.println(list.get(0)[1]);
Java

問題 2

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

問題 3

ArrayList<int[]> list = new ArrayList<>();
list.get(0)[0] = 10;
Java

❌ 間違い

list が空 → get(0) は IndexOutOfBounds

✅ 修正

list.add(new int[1]);
list.get(0)[0] = 10;
Java

問題 4

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[] arr : list){
    System.out.println(Arrays.toString(arr));
}
Java

問題 5

ArrayList<int[]> list = new ArrayList<>();
int[] arr = new int[3];
list.add(arr);
arr[3] = 5;
Java

❌ 間違い

配列の範囲外アクセス

✅ 修正

arr[2] = 5;
Java

問題 6

ArrayList<int[]> list = new ArrayList<>(3);
System.out.println(list.get(0));
Java

❌ 間違い

ArrayList の容量 3 は空リスト → get(0) はエラー

✅ 修正

list.add(new int[]{0});
System.out.println(list.get(0)[0]);
Java

問題 7

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[2]);
System.out.println(list.get(0).length());
Java

❌ 間違い

配列の長さはプロパティ → メソッドではない

✅ 修正

System.out.println(list.get(0).length);
Java

問題 8

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
for(int[] a : list){
    System.out.println(a);
}
Java

❌ 間違い

配列をそのまま println → アドレスが表示される

✅ 修正

for(int[] a : list){
    System.out.println(Arrays.toString(a));
}
Java

問題 9

ArrayList<String[]> data = new ArrayList<>();
data.add(new String[]{"A","B"});
System.out.println(Arrays.toString(data.toArray()));
Java

❌ 間違い

toArray() は Object[] → 子配列の中身は表示されない

✅ 修正

for(String[] arr : data){
    System.out.println(Arrays.toString(arr));
}
Java

問題 10

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
list.get(1)[0] = 5;
Java

❌ 間違い

get(1) → IndexOutOfBounds(要素は1個のみ)

✅ 修正

list.add(new int[1]);
list.get(1)[0] = 5;

問題 11

ArrayList<int[]> list = new ArrayList<>();
int[] arr = null;
list.add(arr);
System.out.println(list.get(0)[0]);
Java

❌ 間違い

arr が null → get(0)[0] で NullPointerException

✅ 修正

arr = new int[1];
list.add(arr);
System.out.println(list.get(0)[0]);
Java

問題 12

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
for(int[] a : list){
    for(int i=0;i<=a.length;i++){
        System.out.println(a[i]);
    }
}
Java

❌ 間違い

i <= a.length → 範囲外アクセス

✅ 修正

for(int i=0;i<a.length;i++){
    System.out.println(a[i]);
}
Java

問題 13

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[2]);
list.get(0)[2] = 5;
Java

❌ 間違い

配列の index 2 は存在しない

✅ 修正

list.get(0)[1] = 5;
Java

問題 14

ArrayList<int[]> list = new ArrayList<>();
int[] arr = new int[3];
list.add(arr);
arr = new int[2];
System.out.println(list.get(0)[2]);
Java

❌ 間違い

list に格納されたのは最初の arr → 要素 2 までアクセス可能

✅ 修正

アクセスは arr ではなく list の最初の配列を使う

System.out.println(list.get(0)[2]);
Java

(ここは注意:新しい arr は list に追加していない)


問題 15

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(Arrays.deepToString(list.get(0)));
Java

❌ 間違い

get(0) は int[] → deepToString は不要

✅ 修正

System.out.println(Arrays.toString(list.get(0)));
Java

問題 16

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
list.remove(1);
Java

❌ 間違い

remove(1) → IndexOutOfBounds(要素は1個のみ)

✅ 修正

list.remove(0);
Java

問題 17

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(list.get(0).length());
Java

❌ 間違い

配列の length はプロパティ → メソッドではない

✅ 修正

System.out.println(list.get(0).length);
Java

問題 18

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

問題 19

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

問題 20

ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
System.out.println(list);
Java

❌ 間違い

println(list) → Object[] 参照表示になる

✅ 修正

for(int[] a : list){
    System.out.println(Arrays.toString(a));
}
Java

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました