SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

作って覚えるJavaプログラミングのススメ

Java入門 (2) - 値と制御構文

作って覚えるJavaプログラミングのススメ 第2回


繰り返し構文について

 続いて、繰り返し構文へと進みましょう。これも、何種類かのものが用意されていますが、最もよく使われるのは「while文」と「for文」の2種類のものでしょう。

while文

while文
while (条件){
    ……繰り返す処理……
}

 これは、繰り返しに関する条件を用意し、その条件が成立する間、指定された処理部分を繰り返し実行するというものです。これは次のような形で記述します。

 条件の部分には、if文と同様に「真偽値」で表される値や比較演算子による式などが設定されます。構文に入ると、まずこの条件をチェックし、trueであればその後の{ }内にある処理を実行します。実行後、再び条件をチェックし、trueならば再び{ }内を実行する……ということを繰り返し、条件がfalseになったら構文を抜けて次へと進みます。

(利用例)――ゼロからある整数までの総和を計算する
public static void main(String[] args){
    int x = 100; // 適当に整数を用意
    int total = 0;
    while(x > 0){
        total += x;
        x = x - 1;
    }
    System.out.println("合計は、" + total + "であります。");
}
実行すると、1~100までの合計を計算し表示する。
実行すると、1~100までの合計を計算し表示する。

 ここでは、「total += x;」という変わった式が登場していますね。これは「totalxを加算する」というものです。要するに、「total = total + x;」と同じものを、もうちょっとスマートに書いたものというわけです。こうした「変数に値を加減乗除する」というものは、「代入演算子」と呼ばれる形で用意されています。

+= 右辺を左辺に加算する
-= 右辺を左辺から減算する
*= 右辺を左辺に乗算する
/= 右辺で左辺を除算する
%= 右辺で左辺を割った余りを左辺に再設定する

 この他に、特にこの後で登場する「繰り返し」構文で多用されるものとして「変数の値を1増やす」「1減らす」という特別な演算子も用意されています。

++ 変数の値を1増やす
-- 変数の値を1減らす

 これらは、変数の前か後につけて使います。例えば、「++A」「A++」といった具合です。これで変数の値を1増減することができます。値の代入をする式などは不要です。

for文

 これは、繰り返しに入る際の初期化処理、繰り返し条件、繰り返すごとに実行する処理といったものを一つの構文にまとめてしまったものです。これは次のような形をしています。

for文
for (初期化処理; 条件; 繰り返し時処理){
    ……繰り返す処理……
}
初期化処理 繰り返しに入る際に1度だけ実行する処理
条件 繰り返しを続けるかチェックするためのもの
繰り返し時処理 繰り返し後、これを実行する

 このforの動作は、whileよりも複雑です。このfor構文に入ると、まず最初に「初期化処理」に書かれている処理を実行します。そして「条件」をチェックし、それが成立していればその後の{ }部分の処理を実行します。実行後、「繰り返し時処理」にある処理を行ってから、再び繰り返しの最初に戻り、また「条件」をチェックして……ということを繰り返すわけです。

 「初期化処理」は、構文に入る際に1度だけしか実行しません。これに対し、「繰り返し時処理」は繰り返すごとに実行します。それぞれの働きの違いをよく頭に入れておきましょう。では、これも簡単な例を挙げておきます。

(利用例)――while文の例をforに書き直す
public static void main(String[] args){
    int x = 100; // 適当な数字
    int total = 0;
    for(int i = 1;i <= x;i++){
        total += i;
    }
    System.out.println("合計は、" + total + "であります。");
}

 比べてみると分かりますが、繰り返し処理というのは、whileでもforでも大体同じように実装できるのです。「この場合は、どちらを使った方が便利か」という違いでしかない、といってよいでしょう。この例のように、繰り返すごとの処理がはっきりしている場合にはforを使った方がすっきりするでしょう。

 forでは、まず最初に「int i = 1」で変数iというものを用意し、これに1を設定していますね。そして、この値が「i <= x」である間は繰り返しを続けます。繰り返し部分を実行したら、「i++」でiの値を1増やしています。こうすると、繰り返すごとに変数iの値は1ずつ増えていき、xの値を超えてi <= xが成り立たなくなったら(つまりiがxより大きくなったら)繰り返しを抜けるようになるわけです。

 この繰り返し構文は、特に先ほどの「配列」と組み合わせたときに威力を発揮します。配列の中にいくつかの値を入れておき、そのすべての値に対して何かの処理をする、というようなときに便利なのです。

public static void main(String[] args){
    int[] arr = new int[]{25,48,87,62,58,19,76}; //適当に値を用意
    int num = 7; // 配列の要素数
    int total = 0;
    for (int i = 0;i < num;i++){
        total += arr[i];
    }
    int ave = total / num;
    System.out.println("平均:" + ave);
}
実行すると、配列の値をすべて合計し平均を計算する。
実行すると、配列の値をすべて合計し平均を計算する。

 例えば、これは配列に用意した整数をすべて合計し、平均を出して表示するものです。forで定義している変数iを使い、arr[i]というようにして繰り返しで配列の要素を順番に取り出しては処理していることが分かるでしょう。

 Java 5からは、forがさらに拡張され、配列の値を自動的に変数へと取り出せるような形で記述できるようになりました。また、ここにあげた他に、whileの条件を繰り返しの最後に行うようなものもあります。とりあえず、ここにあげたwhileforが分かれば繰り返しで困ることはありませんが、余裕がある人はその他にどんな繰り返しがあるか調べてみると面白いでしょう。

次のページ
クラスとインスタンス

この記事は参考になりましたか?

作って覚えるJavaプログラミングのススメ連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1951 2008/08/20 12:05

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー