34
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン×Java】知識編 配列#5 〜配列を完全攻略!-落とし穴-~

Posted at

はじめに

ここまでで配列の基本から、ループ・二次元配列・メソッドまで扱えるようになったね。
最終回は 「実用でよくあるパターン」「初心者がつまずきやすい落とし穴」 を整理します。
「ここに気をつければ大丈夫!」という点をリストアップ!!


🎓 実用でよくある配列の使い方

並び替え(ソート)

int[] nums = {5, 2, 8, 1};

// 簡単なバブルソート
for (int i = 0; i < nums.length; i++) {
    for (int j = 0; j < nums.length - 1; j++) {
        if (nums[j] > nums[j + 1]) {
            int temp = nums[j];
            nums[j] = nums[j + 1];
            nums[j + 1] = temp;
        }
    }
}

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

探す(検索)

int[] nums = {10, 20, 30};
int target = 20;
boolean found = false;

for (int i = 0; i < nums.length; i++) {
    if (nums[i] == target) {
        found = true;
        break;
    }
}

System.out.println("見つかった?: " + found);

まとめ(集計)

int[] scores = {55, 80, 100, 60, 70};
int sum = 0;

for (int i = 0; i < scores.length; i++) {
    sum = sum + scores[i];
}

System.out.println("合計: " + sum);
System.out.println("平均: " + (double) sum / scores.length);

🎓 よくある落とし穴

1. 添字の範囲ミス

int[] nums = {1, 2, 3};
System.out.println(nums[3]); // エラー!範囲外

2. 初期化忘れ

int[] nums;
nums[0] = 10; // エラー!配列を new してない

3. 参照コピーの勘違い

int[] a = {1, 2, 3};
int[] b = a; // 同じものを指す

b[0] = 999;
System.out.println(a[0]); // 999(aも変わってしまう)

4. 二次元配列の length の使い方

int[][] m = new int[3][4];
System.out.println(m.length);     // 3(行数)
System.out.println(m[0].length); // 4(列数)

行と列の length の違いで混乱しやすいから注意!


🎓 デバッグのコツ

配列の中身をまとめて見たいときは Arrays.toStringArrays.deepToString を使うと便利。

import java.util.Arrays;

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

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

出力:

[1, 2, 3]
[[1, 2], [3, 4]]

⚡ ピカチュウ例:草むらに敵ポケモンが潜んでいる!

int n = 5;
String[][] field = new String[n][n];

// 草むらで初期化
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        field[i][j] = "🌿";
    }
}

// 対角線上に敵ポケモン配置(かわいい系)
String[] enemies = {"🐭", "🐰", "🐥", "🐢", "🐸"};
for (int i = 0; i < n; i++) {
    field[i][i] = enemies[i];
}

// 出力
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        System.out.print(field[i][j] + " ");
    }
    System.out.println();
}

出力:

🐭 🌿 🌿 🌿 🌿
🌿 🐰 🌿 🌿 🌿
🌿 🌿 🐥 🌿 🌿
🌿 🌿 🌿 🐢 🌿
🌿 🌿 🌿 🌿 🐸

あとがき

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


34
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?