前回は配列を取り上げました。
その最後で問題を出しましたね。
今回はその解説をしたいと思います。
Q.1から10までの整数の合計値を、配列と「for文」と「複合代入演算子」を用いて求めなさい。
A.
public class Question {<br /><%%KEEPWHITESPACE%%> public static void main(String[] args) {<br /><%%KEEPWHITESPACE%%> int[] n = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };<br /><%%KEEPWHITESPACE%%> int sum = 0;<br /><%%KEEPWHITESPACE%%> for (int i = 0; i < n.length; i++) {<br /><%%KEEPWHITESPACE%%> sum += n[i];<br /><%%KEEPWHITESPACE%%> }<br /><%%KEEPWHITESPACE%%> System.out.print(sum);<br /><%%KEEPWHITESPACE%%> }<br />}実行結果:「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 {<br /><%%KEEPWHITESPACE%%> public static void main(String[] args) {<br /><%%KEEPWHITESPACE%%> int[] n = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };<br /><%%KEEPWHITESPACE%%> int sum = 0;<br /><%%KEEPWHITESPACE%%> for (int i : n) {<br /><%%KEEPWHITESPACE%%> sum += i;<br /><%%KEEPWHITESPACE%%> }<br /><%%KEEPWHITESPACE%%> System.out.print(sum);<br /><%%KEEPWHITESPACE%%> }<br />}一つ目の解答と比べると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文が使える場面は、
- 配列のような複数の要素を扱う
- その要素全てを順番に取り出す
以上の場面に限られます。
そしてもう一つ、拡張for文は各要素に対してインデックス(要素に割り振られる番号)を使いません。
そのため sum += n[i]; ではなく、sum += i; と書きます。「for文」と「拡張for文」には以上のような違いがあるのです。
今回はここまでとします!