LoginSignup
3
3

More than 5 years have passed since last update.

Java入門:第5回 処理の制御(while文とfor文)

Last updated at Posted at 2014-11-01

はじめに

今回は処理の繰返しであるwhile文とfor文について学びます。その前に、処理の流れを確認しましょう。

public class HelloWorld {
  static public  void main(String [] args) {
    //処理
    }
}

Javaではmainメソッドの中に記述した処理(命令:ステートメント)が上から順番に実行されていきます。これらの処理の流れを制御することをフロー制御と言います。フロー制御には繰り返し処理と条件分岐処理の2つがあります。繰り返し処理にはwhile文とfor文の2つがあります。まずwhile文から確認してきましょう。ちなみにwhileは「時間を経過させる」といった意味になります。

1. while文

while(条件) {
    //処理
}

と記述すると()内に記述した「条件」が正しい間、処理を繰返します。例えば次のように記述すると

int x = 0;
while (x<20) {
    System.out.println("x=" + x);
    x = x + 3;
}

と記述すると、「xの値が20より小さい」ということが正しい間、処理を繰返します。

実行すると次のように表示されます。

x=0
x=3
x=6
x=9
x=12
x=15
x=18

【注意】

次のように記述するとうまく行きませんので注意が必要です。

int x = 0;
while(x < 20); {
     System.out.println("x=" + x);
     x = x + 3;
}

このコードはどこに誤りがあるでしょうか、実はこのコード次の次のような処理になっています。

int x = 0;
while(x < 20) //処理A;
{
     System.out.println("x=" + x);
     x = x + 3;
}

while(条件)の後に{}が無い場合は、直後の「処理A」が実行されます。;のみの記述であれば、何も実行しないので、xが0のままなので、処理Aがずっと実行される状況(無限ループ)になります。

2. for文

while文で繰り返し処理を記述した場合は、終了の条件はわかりやすいのですが、処理を何回繰り返したかはわかりにくいです。処理の回数を指定したい場合は、for文という繰返し処理を利用します。for文は次のように記述します。

int x = 0;
for (int i = 0; i < 5; i++) {
     System.out.println(i + "回目の繰返し:x=" + x);
     x = x + 3;
}

実行すると次のように表示されます。

0回目の繰返し:x=0
1回目の繰返し:x=3
2回目の繰返し:x=6
3回目の繰返し:x=9
4回目の繰返し:x=12

for文の()の中の意味は、for(初期値; 終了条件; 継続処理)となりますが、初めはfor(int i = 0; i < 繰返したい回数; i++)と記述し、繰り返す回数を意識するようにしてみましょう。

【補足1:代入演算子】

x = x + 3;

は現在のxに3を足して、xに再度代入するという意味です。次のように記述することも出来ます。

x += 3;

+=の他には、-=や*=、/=などあり代入演算子と呼ばれます。

【補足2:変数の適用範囲】

変数には利用できる範囲が存在します。この範囲のことを変数のスコープといいます。スコープを理解しないと、コンパイルエラーになるので注意しましょう。基本的に変数は定義した{}のブロック内で有効になります。

for (int i = 0; i < 5; i++) {
     System.out.println(i + "回目の繰返し:x=" + x);
     x = x + 3;
}

この場合、変数は、for文の{}内のみで有効なので次のように記述するとコンパイルエラーになります。

●有効範囲外で利用した場合

for (int i = 0; i < 5; i++) {
     System.out.println(i + "回目の繰返し:x=" + x);
     x = x + 3;
}
System.out.println(i);

変数iをfor文の外で利用したい場合は次のように記述します。

int i;
for (i = 0; i < 5; i++) {
     System.out.println(i + "回目の繰返し:x=" + x);
     x = x + 3;
}
System.out.println(i);

●有効範囲内で重複定義した場合

for (int i = 0; i < 5; i++) {
  int i = 10;
     System.out.println(i + "回目の繰返し:x=" + x);
     x = x + 3;
}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3