プログラミング Java

【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を受験する場合は、黒本がおすすめです。
十分な練習問題と本番試験相当の総仕上げ問題が2回分あり、試験対策はこれだけで充分です。
 

まとめ

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

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【Java入門】インターフェースの使い方まとめ

概要 インターフェースとは、内部実装を知る必要なく、利用する機能の接点のみを提供する仕組みです。 接点をソフトウェア的にいうと、メソッドのシグネチャと戻り値の型に当たります。 つまり、どんなメソッドに …

【Java】文字列の完全一致と部分一致を判定する方法

Stringオブジェクトのmatches、containsメソッドを使った説明です。 戻り値:boolean   完全一致 説明 完全一致は文字列が同じであることを判定するだけです。 そのた …

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

【Java】重複しないリストはSetを使う!(用途別 3種類)

概要 重複しないリストは、「Setに格納することで重複を除外してくれる」というのは多くの記事で紹介されています。 ここでは、Setに格納した後のデータの並び順も考慮したいという要件に対応するために、3 …

【JdbcTemplate】IN句に値を入れて複数件取得する方法

JdbcTemplateでIN句に毎回異なる数の値をセットして、 複数のレコードを取得する場合は、「NamedParameterJdbcTemplate」で取得することができます。 コード例 [cra …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。