【Java入門】繰り返し処理(while, for)

当ページのリンクには広告が含まれています。
目次

概要

繰り返し処理の制御構造について学んでいきましょう。

繰り返しには以下があります。

  • while(条件に一致する間だけ繰り返す)
  • do-while(一度必ず実行し、その後は条件に一致する間だけ繰り返す)
  • for(条件に一致する間だけ繰り返す[繰り返し回数を指定可能])

また、繰り返しの最中に、ある条件に達したらループ処理から抜けたかったり、特定の条件のみスキップしたいということがあります。
その場合は以下を使います。

  • break(ループ処理を終了する)
  • continue(次のループに進む)

基本構文

while

()内の条件がTrueである限り、処理を行います。
whileの処理が1行の場合、{}(中カッコ)は省略できます。
これはdo-while、forについても同じです。

do-while

必ず最初の1回は処理が行われます。
そのあとにwhileの条件判定が行われ、Trueである間は繰り返されます。

for

繰り返す回数を指定して処理を行う場合によく使います。

拡張for

配列やCollection型(Listなど)をループで取得して扱うことを簡単にするための仕組みです。
for(型 格納変数名 : 配列またはCollection)を基本構文としています。
配列が空の場合、ループ処理は行われません。

break

繰り返し処理を途中で終了させることができます。
以下の場合、5で終了します。

continue

処理を中断して、次のループに進みます。
以下の場合、偶数(割って0になる)はスキップしているので、奇数(英語でodd)のみが表示されます。

応用

多重ループ

繰り返し処理の中に繰り返し処理がある構造です。
以下の場合、iを1回繰り返す度に、jを9回実行しています。
iの繰り返し処理1回目 -> jの繰り返し処理が9回
iの繰り返し処理2回目 -> jの繰り返し処理が9回
・・・
結果的に、九九の結果が表示されます。

(コラム)
一覧の中に一覧があるような構造をもっている場合に使用することが多いです。
しかし、多重ループはコードが追いにくため、あまりお勧めしません。
将来的には、できるだけ多重ループにならないような設計ができることを目指しましょう。

無限ループ

終了条件が無い繰り返し処理です。
明示的に無限ループにする場合、whileの条件式を「true」にすることで可能です。
たまに、バグで無限ループに陥ってしまっていることもありますので、あまりに処理が重く終了しないということが起こったら、無限ループを疑ってみて下さい。

(コラム)
無限ループの使いどころは、何らかの条件になって終了させるまでずっと動かし続けるためのだと思います。
私自身は業務で無限ループ自体を実装する機会にまだお目にかかったことはないので、あまり使うことはないものだと思っています。

ラベル

ラベルはbreakやcontinueの制御を移す箇所を指定できる目印です。
以下は九九の途中で制御を移すようにしています。
・jが偶数のときは処理しない
・i * jが10になるときはiのループに戻る

(コラム)
実際には、繰り返し処理以外でも使用でき、returnやtry/throw(例外処理)にも指定できます。
しかし、コードが追いにくくなるため、多用することはお勧めできません。

もしJava Silverを受験するのであれば出題される可能性のある内容なので、理解しておくようにしましょう。

Java Silverを受験する場合は、徹底攻略Java SE 11 Silver問題集[1Z0-815]対応(通称:黒本)がおすすめです。
十分な練習問題と本番試験相当の総仕上げ問題が2回分あり、試験対策はこれだけで充分です。

まとめ

  • 繰り返し処理には、while / do-while / for文がある。
  • break, continueにより、繰り返し処理の途中でも終了したり、次のループを行わせることができる。
  • 繰り返し処理には、多重ループと無限ループという使い方もある。
  • ラベルは可読性が悪くなるので多用は避ける。

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次