プログラミング 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


関連記事

結城浩氏のPrototypeパターン 練習課題6-1の回答例

結城浩氏著作「Java言語で学ぶデザインパターン入門」 Prototypeパターン 練習課題6-1の回答例です。 課題の概要 UnderLinePen、MessageBoxクラスのcreateClon …

使って便利だったNode.jsのnpmモジュール

Excel操作 xlsx Excelファイルからシート単位でデータを読み取り、JSON化することができるモジュール。 VBAでは処理が遅い場合の代替手段となるが、書式設定はできない。 JSONファイル …

【Java】SetをStreamで処理する方法 7選!

概要 前回の【Java】ListをStreamで処理する方法 7選!に続き、Set編です。 基本的にListもSetもCollection型であるため、コーディングに大きな差はありません。 気を付ける …

no image

画面にonclickを書かずにイベントを発生させる方法

画面にonclickを記述すると、JavaScript側で関数名が変更になった際の修正が面倒になる。 なのでonclickを記述せずにイベントを発生させるように記述することが望ましいと子ドレビューで指 …

【JdbcTemplate】Queryの書き方(更新系)

  前提 以下のテーブル(users)を持ち、格納するのはUserクラスという想定で説明していきます。 usersテーブル

記事を探す

SpringFramworkの良書

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

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

サイト内検索