Java | 配列の文字列表現 間違い探し問題集

Java Java
スポンサーリンク

配列の表示方法(println / toString / deepToString)に関する 間違い探し(バグ修正)20問 を、
初心者向けに「どこがバグか → 正しい書き方」にフォーカスして作成します。

問題 1

int[] nums = {1, 2, 3};
System.out.println(nums);
Java

❌ どこが間違い?

配列を直接 println している。

✅ 修正例

System.out.println(Arrays.toString(nums));
Java

問題 2

int[] data = {5, 10, 15};
System.out.println(toString(data));
Java

❌ どこが間違い?

toString は単独で呼べない。

✅ 修正例

System.out.println(Arrays.toString(data));
Java

問題 3

String[] names = {"A", "B"};
System.out.println(Arrays.deepToString(names));
Java

❌ 間違い?

2次元以上ではないのに deepToString を使っている。

⚠ 問題ではないが通常は toString を使う

System.out.println(Arrays.toString(names));
Java

問題 4

int[][] table = {{1,2},{3,4}};
System.out.println(Arrays.toString(table));
Java

❌ 間違い?

多次元配列なのに toString を使っている → 中身が表示されない。

✅ 修正例

System.out.println(Arrays.deepToString(table));
Java

問題 5

System.out.println(Arrays.toString(10));
Java

❌ 間違い?

10 は配列ではない。

✅ 修正例

int[] a = {10};
System.out.println(Arrays.toString(a));
Java

問題 6

int[] a = new int[3];
System.out.println(Arrays.toString());
Java

❌ 間違い?

引数なしで toString() は呼べない。

✅ 修正

System.out.println(Arrays.toString(a));
Java

問題 7

int[][] m = {{1,2},{3,4}};
System.out.println(Arrays.toString(m[0][1]));
Java

❌ 間違い?

m[0][1] は数値で配列ではない。

✅ 修正

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

問題 8

int[] arr = {1,2,3};
String s = arr.toString();
System.out.println(s);
Java

❌ 間違い?

配列の toString() はメモリアドレスを返す。

❌ 実行結果例

[I@75a1cd57

✅ 修正

String s = Arrays.toString(arr);
Java

問題 9

int[][] arr = {{1,2},{3,4}};
String s = arr.toString();
System.out.println(s);
Java

❌ 間違い

多次元配列にも toString() を使っている。

❌ 出力はアドレス

[[I@31befd9f

✅ 修正

String s = Arrays.deepToString(arr);
Java

問題 10

char[] cs = {'a', 'b', 'c'};
System.out.println(cs.toString());
Java

❌ 間違い

char 配列にも toString() は使えない。

⭐ char 配列は println がそのまま文字列として表示される

⭐ 正しい例

System.out.println(cs);
Java

問題 11

int[] a = {1,2,3};
System.out.println(Arrays.deepToString(a));
Java

❌ 間違い?

一次元配列で deepToString を使う必要はない。

⚠ 決定的なバグではないが冗長

System.out.println(Arrays.toString(a));
Java

問題 12

int[][][] cube = new int[2][2][2];
System.out.println(Arrays.toString(cube));
Java

❌ 間違い

多次元配列なのに deepToString を使っていない。

✅ 修正

System.out.println(Arrays.deepToString(cube));
Java

問題 13

String[][] data = {{"A","B"},{"C","D"}};
System.out.println(toString(data));
Java

❌ 間違い?

toString はクラスメソッドではない。

✅ 修正

System.out.println(Arrays.deepToString(data));
Java

問題 14

int[] a = null;
System.out.println(Arrays.toString(a));
Java

❌ 間違い?

null を渡すと null と表示されるが、意図せず null の可能性あり。

✔ 実行は可能だが、安全対策が必要

if (a != null) {
    System.out.println(Arrays.toString(a));
}
Java

問題 15

int[] a = {1, 2, 3};
System.out.println(Arrays.toString(a[1]));
Java

❌ 間違い

a[1] は数値であって配列ではない。

正しい出力方法

System.out.println(a[1]);
Java

問題 16

System.out.println(Arrays.toString(new int[][] {{1,2}}));
Java

❌ 間違い

多次元配列 + toString → 中身が見えない。

正しくは

System.out.println(Arrays.deepToString(new int[][] {{1,2}}));
Java

問題 17

double[] d = {1.1, 2.2};
String result = d.toString();
Java

❌ 間違い

配列の toString を使っている。

正しくは

String result = Arrays.toString(d);
Java

問題 18

boolean[][] flags = {{true, false}, {false, true}};
String s = Arrays.toString(flags);
Java

❌ 間違い

多次元配列は deepToString を使うべき。

正しいコード

String s = Arrays.deepToString(flags);
Java

問題 19

String[] items = {"x", "y"};
System.out.println(items);
Java

❌ 間違い

一次元配列を println → アドレス表示

正しいコード

System.out.println(Arrays.toString(items));
Java

問題 20

long[] l = {100L, 200L};
System.out.println(Arrays.deepToString(l));
Java

❌ 間違い

一次元配列に deepToString は不要(動くが冗長)

推奨コード

System.out.println(Arrays.toString(l));
Java
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました