Java | 配列の「長さ」を取得する

Java Java
スポンサーリンク

Javaの配列の「長さ」を、初心者向けに丁寧解説

配列は「同じ種類のデータをまとめて入れておく箱の列」。その箱がいくつあるか(要素数)を調べるのが「配列の長さ」で、Javaでは 配列変数.length と書きます。これを使うと、配列の全要素を安全に処理できます。


配列の長さの基本

  • 書き方:
    配列変数.length(丸括弧は不要。メソッドではなく「フィールド」)
  • 固定サイズ:
    配列は作ったときのサイズが固定です。length の値は変えられません。
  • 例(作成直後の長さ):
int[] num = new int[3];
System.out.println(num.length); // 3
Java
  • 例(初期化子の配列):
int[] nums = {14, 7, 9};
System.out.println(nums.length); // 3
Java

ループで使うときの定番パターン

  • インデックスで回す(for文):
int[] nums = {14, 7, 9};
for (int i = 0; i < nums.length; i++) {
    System.out.println("index " + i + ": " + nums[i]);
}
Java

ポイント:

境界: 先頭は 0、最後は length - 1
安全: length を使えば配列のサイズが変わっても正しく回る。

  • 要素をそのまま回す(拡張for):
int[] nums = {14, 7, 9};
for (int value : nums) {
    System.out.println(value);
}
Java

ポイント:

シンプル: インデックスが不要。
用途: 位置(何番目か)を使わない処理に最適。


よくあるつまずきと回避法

  • lengthはフィールド、変更不可
int[] a = {1, 2, 3};
// a.length = 5; // エラー:変更できない
Java
  • 添字の範囲外(Off-by-oneエラー)
int[] a = {10, 20, 30};
// a[3] は存在しない(最後は a[2])。a[3] は例外(ArrayIndexOutOfBoundsException)
Java

回避: for (int i = 0; i < a.length; i++) と書く。<= a.length としない。

  • null配列に注意
int[] a = null;
// a.length; // NullPointerException(aが配列を指していない)
Java

回避: 配列を使う前に a != null を確認する。

  • 多次元配列のlength
int[][] grid = {
    {1, 2, 3},
    {4, 5}
};
System.out.println(grid.length);      // 2(行数)
System.out.println(grid[0].length);   // 3(0行目の列数)
System.out.println(grid[1].length);   // 2(1行目の列数)
Java

ポイント: 行ごとに列数が違う「ジャグ配列」もある。各行の length を個別に確認。


例題で練習

例題1:配列の合計を求める

  • ねらい: forlength の基本練習
int[] scores = {70, 85, 90, 60};
int sum = 0;
for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}
System.out.println("合計 = " + sum); // 305
Java

例題2:最大値を探す(拡張for)

  • ねらい: 拡張forの使いどころ
int[] data = {5, 12, 3, 9};
int max = data[0];
for (int v : data) {
    if (v > max) max = v;
}
System.out.println("最大値 = " + max); // 12
Java

例題3:配列を逆順に表示

  • ねらい: インデックスの境界理解
int[] a = {1, 2, 3, 4};
for (int i = a.length - 1; i >= 0; i--) {
    System.out.print(a[i] + " "); // 4 3 2 1
}
Java

例題4:2次元配列の全要素を表示

  • ねらい: 多次元での length の考え方
int[][] grid = {
    {1, 2},
    {3, 4, 5}
};
for (int i = 0; i < grid.length; i++) {           // 行
    for (int j = 0; j < grid[i].length; j++) {    // その行の列
        System.out.print(grid[i][j] + " ");
    }
    System.out.println();
}
// 出力: 1 2
//       3 4 5
Java

小さなチェックリスト

  • 基本はこれ: 配列.length をループ条件に使う。
  • 境界: 最後のインデックスは length - 1
  • 拡張for: インデックスが不要なときに短く書ける。
  • 多次元: 行は grid.length、列は各行の grid[i].length
  • null対策: 使う前に 配列 != null を確認。

さらに一歩:配列とListの違い(触りだけ)

  • 固定長: 配列は作成後にサイズ変更不可。
  • 可変長: ArrayList は要素の追加・削除が可能。
  • 目安: サイズが変わる可能性があるなら ArrayList、固定なら配列。

練習課題

  1. 平均値: 配列の合計を length で割って平均を出す。
  2. 検索: ある値が配列に含まれているかを探し、見つかったインデックスを表示。
  3. コピー: 新しい配列を作り、元の全要素を同じ順番で入れる(for を使う)。
  4. フィルタ: 偶数だけを数えて表示する。
  5. 2次元: 3×3の配列を作って、行ごとに合計を出す。

いいですね!では前回提示した練習課題の解答例を、初心者向けに丁寧に書いてみます。


練習課題の解答例

1. 平均値を求める

int[] scores = {70, 85, 90, 60};
int sum = 0;
for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}
double average = (double) sum / scores.length;
System.out.println("平均 = " + average); // 平均 = 76.25
Java

👉 ポイント: 合計を length で割る。整数同士の割り算にならないように (double) を付ける。


2. 値を検索する

int[] data = {10, 20, 30, 40};
int target = 30;
int foundIndex = -1; // 見つからなかった場合は -1

for (int i = 0; i < data.length; i++) {
    if (data[i] == target) {
        foundIndex = i;
        break; // 見つかったらループ終了
    }
}

if (foundIndex != -1) {
    System.out.println(target + " は index " + foundIndex + " にあります");
} else {
    System.out.println(target + " は見つかりませんでした");
}
Java

👉 ポイント: 見つからない場合の処理も用意しておく。


3. 配列をコピーする

int[] original = {1, 2, 3, 4};
int[] copy = new int[original.length];

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

System.out.println("コピー結果:");
for (int v : copy) {
    System.out.print(v + " "); // 1 2 3 4
}
Java

👉 ポイント: 新しい配列を original.length で作り、要素を順番に代入。


4. 偶数だけを表示する

int[] numbers = {1, 2, 3, 4, 5, 6};
System.out.println("偶数:");

for (int n : numbers) {
    if (n % 2 == 0) {
        System.out.print(n + " "); // 2 4 6
    }
}
Java

👉 ポイント: % 演算子で割り算の余りを調べる。n % 2 == 0 が偶数判定。


5. 2次元配列の行ごとの合計

int[][] grid = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int i = 0; i < grid.length; i++) {
    int rowSum = 0;
    for (int j = 0; j < grid[i].length; j++) {
        rowSum += grid[i][j];
    }
    System.out.println("行 " + i + " の合計 = " + rowSum);
}
// 出力:
// 行 0 の合計 = 6
// 行 1 の合計 = 15
// 行 2 の合計 = 24
Java

👉 ポイント: grid.length が行数、grid[i].length がその行の列数。


まとめ

  • 配列.length を使うと「要素数に依存しない」コードが書ける。
  • for文 と組み合わせるのが基本練習。
  • 拡張for文 は「インデックス不要」のときに便利。

次のステップとして「配列の中で最大値・最小値を求める」や「配列を並べ替える(ソート)」に挑戦するとさらに理解が深まります。

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