Java while文での使い方!繰り返し処理・条件構文の基本を解説!
2024.08.06更新
機電系エンジニア必見!!貴重なフリーランス案件はこちら ▶Javaでwhile文を使うと、条件に達するまで処理を繰り返す「繰り返し処理」を行うことが可能です。今回は、Javaのプログラマーにとって習得必須なwhile文の書き方、構文について、初心者向けにコード例と共に解説していきます。
Javaのwhile文とは?
Javaのwhile文の基礎
JAVAのプログラミングにおいてwhile文を使うことで、「ある条件を満たしている間ずっと繰り返し処理を続ける」といった処理が可能となります。Javaのwhile文の構文は「条件式」と「処理部」の2つから構成され、条件が同じ場合は「真(true)」、条件が異なる場合は「偽(false)」となります。条件式が真(true)の間は何度でも処理部を繰り返し実行します。
Javaのfor文との違い
Javaで繰り返し処理を行う際に用いる構文は「while」文の他に「for」文があります。Javaのwhile文は条件式を満たす限り際限なく処理を繰り返しますが、for文は規定の回数だけ繰り返し処理を行う点が異なります。したがって、Javaにおけるそれぞれの構文の使い方は以下のようになります。
while文とfor文の違い
構文 | 使い方 |
while文 | 事前に繰り返す処理の回数が分からない場合 |
for文 | 事前に繰り返す処理の回数が分かっている場合 |
Javaのwhile文の使い方
while文の基本
while (条件式){
繰返し処理部;
}
Javaのwhile文は、条件式と繰り返し処理部から構成されています。条件式を評価して真(true)だった場合に「{}」間 の繰り返し処理を実行します。条件式が偽(false)の場合は、繰り返し処理部には進まずにwhile文を終了します。
Javaのwhile文の特徴の1つに、「繰り返し処理が実行される度に条件式の変数が変化していく」点があります。Javaのwhile文の中でプログラムは、「繰り返し処理部」「条件判定」「繰り返し処理部」とループします。
したがって、Javaでは繰り返し処理部で変数を変化させるようにプログラムしておかないと、無限にwhile文を繰り返してしまいます。以下に実際の数値を含んだJavaのコード例文を用いて解説します。無限ループになる場合を確認しましょう。
while文のサンプルコード
int num = 1;
while (num < 6){
System.out.println("num = " + num) + "です";
num *= 2;
}
上記の例文では、最初に1行目の処理でnum(変数)に1の値を代入します。Javaでは「int」は変数の型を定義しており、例文ではnumを「32ビットの範囲の整数」と定義しています。2行目から5行目がwhile文です。numの値が6より小さい場合に、3行目の処理「System.out.println(“num = ” + num) + “です”」が実行されます。
4行目はnumの値を2倍にするコードであり、numの値が1から2(1×2)に変化します。5行目の「}」は繰り返しの最後の文なので、while文の冒頭である2行目の条件式に戻ります。そして2回目以降も1回目と同様に、条件判定でnumの値が6以下の場合、3行目以降を実行します。サンプルでは4回目の処理でnumの値が8となり、条件式の評価が偽(false)となるためwhile文のループが終わります。
なお例文の4行目を消してもエラーは発生しませんが、numの値が最初に代入した1から変化しないため、無限に繰り返し処理を実行することになります。これがJavaのwhile文の無限ループであり、プログラムの中でこのループが発生するとエラーで止まることがないため、強制終了するまで無駄な計算を繰り返すことになってしまいます。このサンプルコードを実行すると以下の値が出力されます。
サンプルコードの出力
- 1です
- 2です
- 4です
Javaのdo while文の使い方
while文とdo while文の違い
Javaにはwhile文に似たdo while文があります。Javaのdo while文は、while文と同様に繰り返し処理をするための構文です。しかし、Javaのdo while文とwhile文では条件式の位置が異なり、do while文では条件式で「偽(false)」の場合でも、1回は繰り返し処理部の記述内容を実行します。
do-while文の基礎
do {
繰り返し処理部;
} while (条件式);
Javaのdo while文は構文からもわかる通り、条件式よりも繰り返し処理部(do)が前にきます。条件式の判定をする前に処理部が来るため、最低1回は処理を実行します。したがってJavaのdo while文では、while文と同じように条件を設定した場合と比べて1回繰り返し処理部の実行が多くなります。以下に実際の数値を含んだJavaのサンプルコードを用いて解説します。
do while文のサンプルコード
int num = 1;
do{
System.out.println("num = " + num) + "です";
num *= 2;
}while (num < 6);
上記のJavaのdo while文の例文では、最初に1行目の処理でnum(変数)に1の値(整数)を代入し、2行目から5行目でdo while文を使用しています。まず、最初のループで3行目の処理「System.out.println(“num = ” + num) + “です”」が実行されます。
4行目はnumの値を2倍にするコードであり、numの値が2(1×2)に変化します。そして5行目の最後にようやく、do while文の条件判定となります。サンプルコードではnumの値が2なので、2回目の処理にループします。4回目の処理ではnumの値が8となり、条件式の評価が偽(false)となるため、do while文のループが終わります。
なお、Javaのdo while文はwhile文と同様に、例文の4行目を消してしまうと強制終了しなければ繰り返し処理が終わらない「無限ループ」となってしまいます。このサンプルコードを実行すると、以下の値が出力されます。while文で同じ条件式にした場合よりも1回多く繰り返し処理が実行さるため、条件式が同じでも出力結果は1行多くなります。
サンプルコードの出力
- 1です
- 2です
- 4です
- 8です
Javaのwhile文の応用
Javaのwhile文は、条件式の判定で繰り返し処理をさせる構文ですが、Javaのwhile文の途中で「ある命令」をすることでループを強制終了させたり、処理をスキップさせたりすることが出来ます。具体的な命令をさせる構文は「break」と「continue」です。以下にそれぞれの使い方を解説します。
「break」を使ってループを抜ける方法
Javaのwhile文の繰り返し処理部の中に「break」を記載することで、「breakまで到達したときに繰り返し処理を強制終了」させることが出来ます。実際にJavaを使って「break」を使用する場合は「if文」と共に使用することが多く、ある条件を満たすと繰り返し処理を抜けるように設定します。以下にbreak文を使ったJavaのサンプルコードを記載します。
int num = 1;
while (num < 6){
System.out.println("num = " + num) + "です";
num *= 2;
if (num < 3){
break;
}
}
このサンプルコードは前述のwhile文で紹介したサンプルコードに、5から7行のbreak文を含むif文を追加しています。while文で紹介したサンプルコードでは、2行目の条件で偽(false)の評価がされないとwhile文が終了しませんでしたが、このコードでは5行目の条件式がtrue(真)となった場合にwhile文が終了します。
1回目はwhile文の判定が真(ture)なので繰り返し処理が実行され、if文の判定が偽(false)のため2回目のループになります。しかし、2回目はwhile文の判定は真(true)で繰り返し処理は実行されますが、if文の判定が真(true)のためwhile文が終了します。このサンプルコードの出力は以下のようになります。
サンプルコードの出力
- 1です
- 2です
「continue」で処理をスキップする方法
Javaのwhile文の繰り返し処理部の中に「continue」を記載することで、「continueに到達するとwhile文の最初の処理に戻る」処理をすることが出来ます。Javaのwhile文と同様に、実際のJavaのプログラミングでは「if文」と共に使用することが多く、「ある条件を満たすまでは繰り返し処理を行わない」場合に使用します。以下にcontinue文を使ったJavaのサンプルコードを記述します。
int num = 0;
while (num < 6){
num++;
if (num < 2);
continue;
}
System.out.println("num = " + num) + "です";
}
サンプルコードでは1行目で変数であるnumに0の値を代入します。2行目以降がwhile文で、4から6行がcontinue文を含むif文です。3行目でnumの値を1増やします。1回目のループでは4行目はnumの値が1なので、if文の判定が真(true)となりcontinueが実行されます。そのため1回目のループでは最後の7行目の処理は実行されずに2回目のループとなります。
2回目のループでは3行目でnumの値が2になるため、4行目のif文の判定が偽(false)となり7行目が実行されます。3回目以降のループでは4行目のif文は偽(false)のままなので、2行目の条件が真(true)であれば7行目は実行され続けます。Javaのサンプルコードでは2行目の判定が偽(false)となる7回目でwhile文が終わります。
サンプルコードの出力
- 2です
- 3です
- 4です
- 5です
- 6です
Javaでwhile文を使ってみましょう
今回はJavaのwhile文の書き方、使い方を初心者の方向けに紹介しました。繰り返し処理はif文などの条件分岐と併せてよく使われる構文であり、Javaのプログラミングでは基礎的な構文であるため習得は必須です。Javaの初心者で現在学習をしている人は、ぜひ本記事を参考にしてみてください。
また、Javaを使ったエンジニアの仕事をFREE AIDの求人情報から確認してみましょう。実際にどのような仕事で活かせるかをイメージしてJavaの勉強をすることで、モチベーションを上げることをおすすめします。
電子工学・電気工学の専門知識が欲しいときは
電子回路の知識や組み方を勉強し、自分でものづくりができれば良いですが、知識や技術を身に着けるまでにはやはり時間がかかります。しかし、機電系のエンジニアは会社に属していることが多く、頼みづらいと思うこともあるのではないでしょうか。
電子工学や電気工学の専門的な技術・知識が欲しい!という方におすすめなのがFREE AIDです。
FREE AIDは、これまでになかったフリーランスの機電系エンジニアにむけた情報プラットフォームです。
仕事を探すフリーランスのエンジニアと、機電系のプロフェッショナル人材が欲しい企業などのマッチングを行っています。
フリーランス×機電系エンジニア!高単価求人はこちら ▶機電系求人はこちら
-
設計技術者(樹脂、金属部品)
-
- 単価
-
40~50万円
-
- 職種
- 機械設計
-
詳細を見る
-
-
FPGAの設計開発:電気電子設計
-
- 単価
-
70~80万円
-
- 職種
- 電気電子設計
- スキル
- ・FPGA論理設計、RTLコーディング、論理検証環境構築、論理検証・RTLコード:VHDL・論理検証ツール:Siemens製Questa/ModelSIM
- 地域
- 東京
- ポイント
- #高単価
-
詳細を見る
-
-
UI画面の設計業務:電気電子設計
-
- 単価
-
64〜万円
-
- 職種
- 開発
- 電気電子設計
- スキル
- 必要スキル: ・電源回路は複数回経験し、設計動作確認など、一人でもある程度やるべきことが分かる。 ・数十頁のデータシートを読み、要求仕様(タイミング/電圧など)が理解できる ・その他左記の回路の種類の中で、回路設計の実務経験が1回以上ある。 ・回路修正ができる(半田付け、ジャンパー処理)
- 地域
- 関西
- ポイント
- #業務委託#駅近
-
詳細を見る
-
-
【急募】工作機械メーカーにおける自社製品の制御設計
-
- 単価
-
40~50万円
-
- 職種
- 電気電子設計
- スキル
- 基本的なPCスキル産業用機械・装置の電気設計経験
- 地域
- 山梨県
- ポイント
- #業務委託
-
詳細を見る
-