Tips

続・とってもわかりやすいJAVA 【第5回 配列と拡張for文】
2014.09.08

続・とってもわかりやすいJAVA 【第5回 配列と拡張for文】

前回は配列を取り上げました。

その最後で問題を出しましたね。

今回はその解説をしたいと思います。

Q.1から10までの整数の合計値を、配列と「for文」と「複合代入演算子」を用いて求めなさい。

A.

public class Question {
<%%KEEPWHITESPACE%%>    public static void main(String[] args) {
<%%KEEPWHITESPACE%%>        int[] n = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
<%%KEEPWHITESPACE%%>        int sum = 0;<br /><%%KEEPWHITESPACE%%>        for (int i = 0; i &lt; n.length; i++) {
<%%KEEPWHITESPACE%%>        sum += n[i];<br /><%%KEEPWHITESPACE%%>        }
<%%KEEPWHITESPACE%%>        System.out.print(sum);
<%%KEEPWHITESPACE%%>    }
}

実行結果:「55

こちらが解答の一つとなります。

ではポイントとなる3~8行目を解説していきましょう。

3行目・・・配列nに1~10の整数値を格納しています。

4行目・・・合計値である変数sumに0を代入して初期化しています。

5行目・・・for文繰り返し処理を行います。n.lengthが「10」なので計10回処理を繰り返します。

6行目・・・繰り返す処理です。変数sumにn[0]~n[9]を加算していきます。
sum += n[i]; は sum = sum + n[i]; に書き換えることが可能です。
7行目・・・for文がここで終わります。

8行目・・・7行目でループを抜けた後、合計値である変数sumを出力します。

もちろんプログラムは一通りではありません。
もう一通り紹介しましょう。

public class Question {
<%%KEEPWHITESPACE%%>    public static void main(String[] args) {
<%%KEEPWHITESPACE%%>        int[] n = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
<%%KEEPWHITESPACE%%>        int sum = 0;
<%%KEEPWHITESPACE%%>        for (int i : n) {
<%%KEEPWHITESPACE%%>            sum += i;
<%%KEEPWHITESPACE%%>        }
<%%KEEPWHITESPACE%%>    System.out.print(sum);
<%%KEEPWHITESPACE%%>    }
}

一つ目の解答と比べると5,6行目が変わっています。

これは「拡張for文」といわれる書き方です。

拡張for文とは

拡張for文とは、Java5.0から導入されたfor文の書き方です。

特徴は、書く内容が簡単になった、ということです。

for ( 変数宣言 : 参照変数名 ) {
繰り返し処理
}

このような構文となっています。

変数宣言は参照変数と同じデータ型に合わせてあげる必要があります。
つまり、配列の要素がint型なら変数宣言もint型、String型ならString型に合わせなければいけません。

では解答の1つ目と2つ目のfor文の部分を比べてみましょう。

【一般的なfor文】

for (int i = 0; i < n.length; i++) {

sum += n[i];
}

【拡張for文】
for (int i : n) {
sum += i;
}

拡張for文を使った方が簡単に書けますね。
一般的なfor文と比較してみると、条件式で「何回処理を繰り返す」ということが書かれていません。
これは配列の「全要素」を扱うためです。
つまり、拡張for文が使える場面は、

  1. 配列のような複数の要素を扱う
  2. その要素全てを順番に取り出す

以上の場面に限られます。
そしてもう一つ、拡張for文は各要素に対してインデックス(要素に割り振られる番号)を使いません。

そのため sum += n[i]; ではなく、sum += i; と書きます。

「for文」と「拡張for文」には以上のような違いがあるのです。

今回はここまでとします!

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search