本文へスキップ
BecomeCoder

Java文法コース · 第4章 制御構文 ― 処理の流れを分岐・繰り返す · レッスン18

拡張for ― 配列やコレクションを順に取り出す

ブラウザで完結

導入

複数のデータをまとめて持つしくみに配列があります(詳しくは次章)。配列の中身を1つずつ順番に処理したいとき、通常の for よりも簡潔に書ける 拡張for(for-each) を紹介します。

説明

配列とは、複数の値をひとまとめにして番号(インデックス)で管理できる箱です。int[] scores = {80, 95, 70, 60}; のように波かっこでまとめて作れます。

public class Main {
    public static void main(String[] args) {
        int[] scores = {80, 95, 70, 60};

        int total = 0;
        for (int score : scores) {
            total += score;
        }
        System.out.println(total);

        for (int score : scores) {
            System.out.println(score);
        }
    }
}
  • for (int score : scores) { ... } … 「scores の中身を1つずつ score に取り出しながら繰り返す」という意味です。(コロン)を挟んで「取り出す変数 : 対象」の順に書きます。
  • 通常の for (int i = 0; i < scores.length; i++) と違い、インデックス(何番目か)を自分で管理する必要がないぶん、シンプルに書けます。ただし「何番目の要素か」の情報は使えないので、それが必要なときは通常の for を使います。

やってみよう

下のエディタで scores の中身を増やしたり変えたりして、total の値が変わることを確かめましょう。

演習

int[] nums = {10, 20, 30, 40, 50}; を拡張forで走査し、合計を表示してください(結果は 150)。

ヒント1を見る

int sum = 0; for (int n : nums) { sum += n; } の形にします。

ヒント2を見る

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

実際に動かしてみよう

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

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

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