• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Java while文の使い方

この記事のポイント

  • while文とdo-while文の基本構文と使い方
  • 条件に基づく繰り返し処理の実装方法
  • 実用的なループ制御パターンとテクニック

目次

Javaにおけるfor文とは?

Javaのwhile文は、指定条件が真である限り、処理を繰り返し実行するために使用する制御構造です。while文はfor文とは異なり、繰り返し回数が事前に決まっていない場合に有効なものとなります。

while文がよく使われる場面には、「ユーザーが正しい値を入力するまで繰り返す」「ファイルの終端まで読み込みを続ける」といった条件が満たされるまで処理を継続したいケースが想定されるでしょう。

while文には、通常のwhile文とdo-while文の2種類があります。

通常のwhile文の特徴は、条件を最初にチェックしてから処理を実行することです。条件が最初から偽の場合は、一度も実行されません。一方でdo-while文は、処理を最初に実行してから条件をチェックするため、最低でも1回は処理が実行されます。

while文とdo-while文は、ユーザー入力の処理、ゲームのメインループ、データの検索処理といった動的条件に基づく繰り返し処理でよく活用されています。各特徴と違いを理解したうえで、適材適所の活用をしてみてください。

【関連】
Javaをもっと詳しく学ぶならpaizaラーニング

基本構文

このセクションでは、Javaのwhile文における基本構文を見ていきましょう。

while文は、「while(条件式)」の形式で記述します。条件が真の間は、処理ブロック内の文を繰り返し実行する形です。

一方でdo-whileの基本構文は、「do { 処理 } while(条件式)」です。do-whileの場合、処理を最低1回実行してから条件チェックを行います。

条件式には、boolean型の値を返す式を記述することも可能です。また、比較演算子や論理演算子を使うことで、複雑な条件も表現できます。ただし、while文を使うときは無限ループを避ける目的から、ループ内で条件変更する処理を含めることが重要でしょう。

public class Main { public static void main (String[] args) { // 基本的なwhile文 int count = 1; while (count <= 3) { System.out.println(count + "匹目のネコ"); count++; } } }

出力結果:

1匹目のネコ
2匹目のネコ
3匹目のネコ
public class Main { public static void main (String[] args) { // do-while文 int number = 1; do { System.out.println("イヌが" + number + "回吠えました"); number++; } while (number <= 2); } }

出力結果:

イヌが1回吠えました
イヌが2回吠えました

実用例

Javaのwhile文は、条件に基づく柔軟な繰り返し処理を実現するうえで強力な制御構造です。

このセクションでは、実際の開発現場でよく使われる繰り返し処理について、動物をテーマにしたコード例とともに解説していきます。各事例を最後まで目を通すと、条件判定による処理継続やユーザー入力の処理、データ検索、累積処理といった動的条件に基づくさまざまなパターンを、具体的なコード例とともに学習できるでしょう。

各例では、コードの動作を理解しやすくするために、実行結果もあわせて示しています。

while文を早くマスターしたい方は、自分の環境にコード例を実装して多くの繰り返し処理を動かしてみてください。コードに触れながら試行錯誤を繰り返すと、whileとdo-whileの違いや基本構文も感覚として身についてくるでしょう。

条件に基づく累積処理

以下で示しているのは、while文を使って、特定条件を満たすまで値を累積する方法です。具体的には、動物の体重を順に足していき、目標重量に達するまで処理を続けています。累積処理の基本ともいえるでしょう。

以下のコードを理解すると、配列の要素を順次処理しながら合計値を計算し、指定した閾値に達した時点でループを終了する実装を行えるはずです。

public class Main { public static void main (String[] args) { double[] weights = {5.2, 3.8, 7.1, 4.5}; double total = 0.0; int index = 0; while (total < 15.0 && index < weights.length) { total += weights[index]; System.out.println((index + 1) + "匹目のウサギ: " + weights[index] + "kg"); index++; } System.out.println("合計重量: " + total + "kg"); } }

出力結果:

1匹目のウサギ: 5.2kg
2匹目のウサギ: 3.8kg
3匹目のウサギ: 7.1kg
合計重量: 16.1kg

配列の検索処理

以下で示しているのは、while文を使い、配列内の特定要素を検索する方法です。指定した動物が見つかるまで配列を順に検索する例となっており、条件による検索処理の基本的な実装方法をあらわしています。

このテクニックは、線形検索アルゴリズムの基本形です。このコード例を理解すると、要素が見つかった時点でループを終了する効率的な処理方法が身につくでしょう。

public class Main { public static void main (String[] args) { String[] animals = {"ライオン", "トラ", "チーター"}; String target = "チーター"; int index = 0; boolean found = false; while (index < animals.length && !found) { if (animals[index].equals(target)) { found = true; System.out.println(target + "を発見: " + (index + 1) + "番目"); } index++; } } }

出力結果:

チーターを発見: 3番目

do-while文を使った入力検証

以下で示しているのは、do-while文を使ってユーザー入力の検証を行う方法です。正しい動物の年齢が入力されるまで繰り返し処理を実行する仕組みとなっており、入力検証を実装する際に役立つテクニックとなります。

動作としては、最低1回は処理を実行し、有効な値が入力されるまで繰り返すパターンです。このコード例を理解すると、ユーザーインターフェースでよく使われる実装方法が自然と身につくでしょう。

public class Main { public static void main (String[] args) { int age = 35; // 最初の入力値 boolean valid; do { valid = (age >= 1 && age <= 30); if (valid) { System.out.println("有効な年齢: " + age + "歳のゾウです"); } else { System.out.println("無効な年齢: " + age + "歳"); age = 5; // 修正された入力値 } } while (!valid); } }

出力結果:

無効な年齢: 35歳
有効な年齢: 5歳のゾウです

カウンタを使った条件制御

以下で示しているのは、while文でカウンタを使い複雑な条件制御を行う方法です。動物の餌やりスケジュールをシミュレートするコード例となっており、複数条件を組み合わせた処理をあらわしています。

このコードを理解すると、日数をカウントしながら特定の条件に基づいて処理を実行し、累積値を管理する実用的なパターンが身につくでしょう。

public class Main { public static void main (String[] args) { int day = 1; int totalFeedings = 0; while (day <= 5) { System.out.println(day + "日目:"); if (day % 2 == 1) { System.out.println(" パンダに餌を与えました"); totalFeedings++; } day++; } System.out.println("総餌やり回数: " + totalFeedings + "回"); } }

出力結果:

1日目:
  パンダに餌を与えました
2日目:
3日目:
  パンダに餌を与えました
4日目:
5日目:
  パンダに餌を与えました
総餌やり回数: 3回

文字列処理での条件ループ

以下で示しているのは、while文を使って文字列を処理し、特定条件を満たすまで操作を続ける方法です。動物の名前から特定の文字を除去する例となっており、条件ループの実装方法をあらわしています。

このコード内容を理解すると、文字列の検索と削除を繰り返し実行し、対象文字が完全に除去されるまで処理を継続する実用的な文字列操作パターンが身につくでしょう。

public class Main { public static void main (String[] args) { String name = "ハムスター"; String target = "ス"; System.out.println("元の名前: " + name); while (name.contains(target)) { int index = name.indexOf(target); name = name.substring(0, index) + name.substring(index + 1); System.out.println("削除後: " + name); } } }

出力結果:

元の名前: ハムスター
削除後: ハムター

複数条件でのループ制御

以下で示しているのは、while文で複数条件を組み合わせてループを制御する方法です。動物の健康チェックで複数の指標を監視する例となっており、条件の組み合わせによる制御方法をあらわしています。

このコードを理解すると、論理演算子を使って複数の条件を同時に評価し、いずれかの条件が満たされなくなった時点でループを終了する実践的な制御パターンが身につくでしょう。

public class Main { public static void main (String[] args) { double temp = 36.5; int count = 0; boolean healthy = true; while (healthy && count < 3) { count++; temp += 0.5; System.out.println(count + "回目: 体温" + temp + "度"); if (temp > 38.0) { healthy = false; System.out.println("警告: 異常値を検出"); } } } }

出力結果:

1回目: 体温37.0度
2回目: 体温37.5度
3回目: 体温38.0度

ネストしたwhile文

以下で示しているのは、while文を入れ子(ネスト)にして、複雑な繰り返し処理を実現する方法です。動物園の複数のエリアを順次見回りする例となっており、ネストしたループの使い方と実装方法をあらわしています。

このコードを理解すると、外側のループで大きな処理単位を制御したうえで、内側のループで詳細な処理を実行する階層的な処理構造を理解できます。また、二次元配列の操作にも応用できるテクニックが身につくでしょう。

public class Main { public static void main (String[] args) { String[] areas = {"サバンナ", "ジャングル"}; String[][] animals = {{"ライオン", "シマウマ"}, {"ゴリラ", "サル"}}; int i = 0; while (i < areas.length) { System.out.println(areas[i] + "エリア:"); int j = 0; while (j < animals[i].length) { System.out.println(" " + animals[i][j] + "を確認"); j++; } i++; } } }

出力結果:

サバンナエリア:
  ライオンを確認
  シマウマを確認
ジャングルエリア:
  ゴリラを確認
  サルを確認

無限ループの回避

以下で示しているのは、while文で無限ループを回避する安全な書き方です。動物の体重測定で異常値をスキップしながら処理を続けるシナリオのなかで、安全な実装方法を実践的にあらわしています。

このコードを理解すると、ループカウンタの確実な更新と適切な終了条件の設定により、プログラムが無限に実行されることを防ぐ重要テクニックが身につくでしょう。

public class Main { public static void main (String[] args) { double[] weights = {-1.0, 5.5, 0.0, 8.2, -3.0}; int index = 0; int validCount = 0; while (index < weights.length) { if (weights[index] > 0) { validCount++; System.out.println("有効な体重: " + weights[index] + "kg"); } index++; // 必ずインクリメント } System.out.println("有効な測定数: " + validCount + "個"); } }

出力結果:

有効な体重: 5.5kg
有効な体重: 8.2kg
有効な測定数: 2個

まとめ

Javaのwhile文は、条件に基づく繰り返し処理を実現するうえで重要な制御構造です。while文とdo-while文を適切に使い分けることで、柔軟で効率的なプログラムを作成できます。

Javaプログラミング初心者の方は、while文によるシンプルな繰り返し処理に加えて、無限ループの回避や複数条件の組み合わせといった安全で実用的なコードを書くための基本を理解することが重要です。

適切な条件設定と更新処理を身につけることで、読みやすく保守性の高いプログラムが作成できるでしょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェック

  1. paizaラーニングトップ
  2. リファレンス
  3. Javaのリファレンス記事一覧
  4. Java while文の使い方