本文へスキップ
BecomeCoder

Java文法コース · 第5章 配列 ― 複数のデータをまとめて扱う · レッスン21

配列の走査 ― forと拡張forで巡る

ブラウザで完結

導入

配列の全要素を1つずつ調べる、たとえば「一番大きい値を探す」「全部を表示する」といった処理は、配列を扱ううえでもっとも基本的な操作です。前章の for と拡張forを使い分けながら書いてみましょう。

説明

public class Main {
    public static void main(String[] args) {
        int[] nums = {4, 9, 2, 7, 5};

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

        int max = nums[0];
        for (int n : nums) {
            if (n > max) {
                max = n;
            }
        }
        System.out.println(max);
    }
}
  • for (int i = 0; i < nums.length; i++)インデックスを使って走査する形。i を使って nums[i] にアクセスするので、「何番目か」の情報も同時に扱えます。
  • for (int n : nums) … 拡張forで中身だけを順に取り出す形。最大値を探すように「値さえわかればいい」処理はこちらのほうが簡潔です。
  • 最大値探索のコツは、まず先頭の要素を「今のところの最大値」としておき、残りと比べながら更新していくことです。

「インデックスが必要か」で for と拡張forを使い分けましょう。

やってみよう

下のエディタで nums の中身を変えて、最大値の結果が変わることを確かめましょう。最大値ではなく最小値を求めるにはどう変えればよいか、考えてみてください。

演習

int[] nums = {12, 45, 7, 89, 23}; の中の最小値を通常の for で求めて表示してください(結果は 7)。

ヒント1を見る

int min = nums[0]; としてから、for (int i = 0; i < nums.length; i++) { if (nums[i] < min) { min = nums[i]; } }

ヒント2を見る

最後に System.out.println(min);

実際に動かしてみよう

下のエディタにJavaを書いて「実行」を押すと、学習用シミュレータが System.out.println の出力を表示します(本物のJVMではなく、教材の範囲を再現した軽量エンジンです)。クラス・継承・コレクションなども動きます。Scanner で入力を読む例は「標準入力」欄に値を入れてください。本文の例を書き換えて動かしてみましょう(Stream・ラムダ・スレッド・ファイル入出力など一部の機能は対象外です)。

Java — ブラウザ内で実行(学習用シミュレータ)

Javaの教材サブセットを動かす学習用シミュレータを読み込みます(本物のJVMではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。