【Java】繰り返し処理の使い方【初心者向け】

繰り返し処理の使い方_アイキャッチ画像 Java

「繰り返し処理の動きが分からない」

「for文とwhile文の使い分けは?」

こういった疑問に答えます。

✔︎この記事の内容

・繰り返し処理の動きを解説

・for文とwhile文の使い分け

私は、大学生の時にプログラミングを始め、現在、プログラミング経験が5年ほどです。

現在は、某大手IT企業でシステムエンジニアとして働いています。

繰り返し処理の動きを解説

繰り返し処理には、for文を用いた繰り返し処理と、while文を用いた繰り返し処理の2種類あります。

for文の挙動

基本的な構文は以下の通りです。

for(初期条件; 繰り返し条件; 更新条件){
    処理
}

for文では、繰り返し条件を満たしている間、for文内の処理を実行します。

実際に具体例を見ながら説明していきましょう。

int i;

for(i=0; i < 2; i++){
    System.out.println(i);
}

この例の場合、

初期条件:int i = 0

繰り返し条件:i < 2

更新条件:i++

となります。

以下が処理の流れになります。

繰り返し処理1回目
・i=0(初期条件)より、繰り返し条件(i<2)を満たしている
・処理System.out.println(i);が実行
・更新条件i++が実行され、iに1が加算される(i=1)

繰り返し処理2回目
・i=1より、繰り返し条件(i<2)を満たしている
・処理System.out.println(i);が実行
・更新条件i++が実行され、iに1が加算される(i=2)

繰り返し処理3回目
・i=2より、繰り返し条件(i<2)を満たさない
・繰り返し処理終了

更新条件は i++のように1ずつ加算する必要はなく、

i+=2のようにして2ずつ加算したりすることもできます。

while文の挙動

基本的な構文は以下の通りです。

while(繰り返し条件){
        処理
}

while文では、繰り返し条件を満たしている間、while文内の処理を実行します。

ここでも、実際に具体例を見ていきましょう。

int sum = 1;

while(sum < 10){
    sum *= 2;
}

以下が処理の流れになります。

繰り返し処理1回目
・sum=1より、繰り返し条件(sum<10)を満たしている
・処理sum*=2が実行され、sumが2倍になる(sum=2)

繰り返し処理2回目
・sum=2より、繰り返し条件(sum<10)を満たしている
・処理sum*=2が実行され、sumが2倍になる(sum=4)

繰り返し処理3回目
・sum=4より、繰り返し条件(sum<10)を満たしている
・処理sum*=2が実行され、sumが2倍になる(sum=8)

繰り返し処理4回目
・sum=8より、繰り返し条件(sum<10)を満たしている
・処理sum*=2が実行され、sumが2倍になる(sum=16)

繰り返し処理5回目
・sum=16より、繰り返し条件(sum<10)を満たしていない
・繰り返し処理終了

While文を用いる際は、無限ループしないように注意してください。

必ず繰り返し条件が成立しなくなるように、処理を記述しなければいけません。

例えば、上の例ではsumの値を増加させる処理を行っています。

しかし、sumの値を減らしていく処理をさせたらどうでしょう?

いつまでも繰り返し条件(sum < 10)を満たしてしまうため、処理が永遠に繰り返されます。

for文とwhile文の使い分け

for文とwhile文を使い分けるポイントは、繰り返し回数が分かっているか否かです。

for文:繰り返し回数が分かっている時

while文:繰り返し回数が分からない時


for文の場合には、繰り返し条件の他に、初期条件と更新条件を設定します。

そのため、for文内の処理とは関係なく繰り返し回数が決まります

while文の場合は、繰り返し条件のみを設定します。

そのため、while文内の処理によって繰り返し回数が決まります

ここで、問題です。

次のような場合はどちらを使った方が良いでしょう?

①ある数値を2倍していき、値が1000より大きくなるまで繰り返す。

②要素数30の配列の要素を全て3にする。

答えは、、、




①while文

②for文

です。

①は正直、for文でも書けますが、あまりプログラム的にきれいではありません。

②をwhile文で書こうとする場合、繰り返し条件が複雑になってしまいます。

例えば、「要素が全て3になった」という条件を簡潔に書けるでしょうか?

私は思いつきません。

実際の、①、②のプログラムは以下のようになります。

①2の2乗を繰り返し行い、値が1000より大きくなるまで2乗する

int n = 2;

while(n <= 1000){
    n *= 2;
}

//for文で無理矢理書く場合(初期条件、更新条件が繰り返し条件に関係しない)
for(int i = 0; n <= 1000; i++){
    n *= 2;
}


②要素数30の配列の要素を全て3にする

int[] num = new int[30];

for(int i = 0; i < num.length; i++){
    num[i] = 3;
}

まとめ

for文とwhile文の使い分け
 ・for文:繰り返し回数が分かる時
 ・while文:繰り返し回数が分からない時

コメント

タイトルとURLをコピーしました