Java | 配列の文字列表示 実務風 応用問題セット

Java Java
スポンサーリンク

ここでは 「現場で本当に起こりやすいミス」だけを集めた、“バグ修正形式” の実務風応用問題セット(10 問) を紹介します。
初心者〜中級者がハマりやすいポイントを中心にしています。

すべて 「誤ったコード → 何が問題か? → 正しいコード」 のセットです。
模範解答つき。


問題 1:toString のつもりで println を使ってしまう

int[] nums = {1, 2, 3};
System.out.println(nums); // 中身が出ると思っていた…
Java

修正せよ。


問題 2:多次元配列に toString を使っている

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

正しく全要素を表示するコードに直せ。


問題 3:deepToString を 1次元配列に使ってしまう(コンパイルエラー)

int[] arr = {10, 20, 30};
System.out.println(Arrays.deepToString(arr));
Java

正せ。


問題 4:import を忘れてコンパイルエラーになる

int[] a = {5, 6, 7};
System.out.println(Arrays.toString(a));
Java

必要な修正をせよ(コードも書く)。


問題 5:null が混じった多次元配列の出力

String[][] words = {
    {"apple", "banana"},
    null,
    {"cat", "dog"}
};
System.out.println(Arrays.toString(words));
Java

全ての要素を確実に表示できるようにせよ。


問題 6:ログ出力で配列をそのまま + 連結してしまう

int[] scores = {80, 90, 70};
System.out.println("Scores: " + scores);
Java

中身が表示されるように修正せよ。


問題 7:配列の中の文字列を連結しようとして誤用

String[] names = {"taro", "jiro", "hanako"};
System.out.println("Users=" + names.toString());
Java

修正せよ。


問題 8:3次元配列を toString で出力しようとしている

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

全階層の要素を見える形に直せ。


問題 9:List と配列を混同している(実務で非常に多い)

List<String> items = Arrays.asList("A", "B", "C");
System.out.println(Arrays.toString(items)); // エラーではないが…
Java

正しい出力方法に修正せよ。


問題 10:配列をログ出力しようとして NPE を起こす可能性

String[] data = getData(); // null かもしれない
System.out.println(Arrays.toString(data));
Java

NPE を防ぐための安全な書き方に直せ。


解答 1

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

解答 2

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

解答 3

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

解答 4

import java.util.Arrays;

int[] a = {5, 6, 7};
System.out.println(Arrays.toString(a));
Java

解答 5

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

解答 6

System.out.println("Scores: " + Arrays.toString(scores));
Java

解答 7

System.out.println("Users=" + Arrays.toString(names));
Java

解答 8

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

解答 9

List をそのまま引数に渡しても意味が違う。

System.out.println(items); 
// または
System.out.println(items.toString());
// ※ List は toString が中身を展開してくれる
Java

解答 10

if (data == null) {
    System.out.println("data is null");
} else {
    System.out.println(Arrays.toString(data));
}
Java

実務では Objects.toString を使うことも多い:

System.out.println(Objects.toString(Arrays.toString(data), "null"));
Java

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