MENU

【Java】レッスン2-05:while文とdo-while文を使った繰り返し処理を理解しよう

tggaa478@yahoo.co.jp

一つ前のページではfor文による繰り返し処理について学習しました。

今回は while文による繰り返し処理 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編

 ・Lesson2-1:比較演算子と論理演算子を理解しよう
 ・Lesson2-2:if文による分岐処理を理解しよう
 ・Lesson2-3:switch文による分岐処理を理解しよう
 ・Lesson2-4:for文による繰り返し処理を理解しよう
 ・Lesson2-5:while文による繰り返し処理を理解しよう ◁今回はココ
 ・Lesson2-6:繰り返しを制御しよう
 ・Lesson2-7:配列を理解しよう
 ・Lesson2-8:エラーメッセージを読めるようになろう
 ・Lesson2-9:例外処理を理解しよう
 ・確認問題2-☆1:ハイアンドロー ゲームを作ろう
 ・確認問題2-☆2:数字当てゲームを作ろう
 ・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

Javaのwhile文とdo-while文の違いと基本構文を解説

繰り返し処理は特定の条件を満たすまで同じ処理を繰り返す場面で使われる便利な機能です。

本節ではJavaで使用される繰り返し処理の中でも、while文とdo-while文について解説します。

for文との違いも確認しながら、実際の使い方を理解していきましょう。

while文の特徴と繰り返しのしくみ

while文は指定された条件が満たされている間、ブロック内の処理を繰り返します。

条件がtrueの間は繰り返し実行されるため、何らかの条件が変化するような処理と組み合わせて使われることが一般的です。

while文の基本的な書き方と使い方

while文の構文は次の通りです。

while (条件) {
    // 繰り返す処理
}
  • 条件:この条件がtrueである限り、ブロック内の処理が繰り返されます。
  • 繰り返す処理:条件がfalseになるまで実行されるコードブロックです。

実例で学ぶwhile文の使い方

次にwhile文を使用した具体的な例を示します。

この例では変数countが5以下である間、カウントを出力し続けます。

public class WhileExample {
    public static void main(String[] args) {
        int count = 1;
        
        while (count <= 5) { // countが5以下である間、繰り返し
            System.out.println("カウント: " + count);
            count++; // countを1ずつ増やす
        }
    }
}

このコードを実行すると以下のように出力されます。

カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5

この例ではcountが5以下の間countの値を出力し、count++でインクリメントしています。

countが6になった時点で条件がfalseになり、ループが終了します。

do-while文の書き方と実行の流れ

while文は、もし最初から条件を満たしていなかった場合は何も起こりませんが、do-while文は少なくとも一度は処理を実行し、その後で条件判定を行う繰り返し処理です。

while文と異なり、条件がfalseでも一度は実行されます。

do-while文の構文は以下の通りです。

do {
    // 繰り返す処理
} while (条件);
  • 繰り返す処理:まずこのブロックが実行され、その後で条件が評価されます。
  • 条件:条件がtrueである限り、ブロック内の処理が再び実行されます。

do-while文の例は以下の通りです。

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;

        do {
            System.out.println("カウント: " + count);
            count++;
        } while (count <= 5); // countが5以下である間、繰り返し
    }
}

この例ではdoブロック内の処理がまず実行され、その後で条件がチェックされます。

最終的にcountが6となった段階で条件がfalseとなり、ループが終了します。

while文・do-while文の違いと使い分けポイント

while文とdo-while文は、条件に基づいて繰り返し処理を行うために使われる構文です。

while文は条件がtrueのときのみ実行されるため、ループに入るかどうかを事前に判定します。一方do-while文は少なくとも一度は実行される点で異なります。

どちらの繰り返し構文も、状況に応じて使い分けると効果的です。

次回の節では、繰り返し処理の制御に役立つbreakcontinueについて学んでいきましょう。

練習問題|while文で合計が100を超えるまで数値を入力するJavaプログラム

ユーザーに整数を次々と入力してもらい、その合計値を表示するプログラムを作成しましょう。

このプログラムではユーザーが入力する数値の合計が100を超えるまで、入力と合計表示が繰り返されます。

プログラムが合計値100を超えたら終了し、最終的な合計を表示します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scannerクラスを使用してユーザーからの数値入力を受け取ること。
  • 変数sumを宣言し、初期値0で合計値を格納すること。
  • while文を使用して、合計が100以下の間はユーザーに数値を入力してもらうようにすること。
  • 入力された数値を変数sumに加算し、その都度現在の合計を表示すること。
  • 最終的に、合計が100を超えた時点でwhile文を終了し、最終的な合計を画面に表示すること。

ただし、以下のような実行結果となること。

整数を入力してください(合計が100を超えたら終了します):
数値を入力: 10
現在の合計: 10
数値を入力: 20
現在の合計: 30
数値を入力: 50
現在の合計: 80
数値を入力: 30
現在の合計: 110
最終的な合計: 110

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:Scannerクラスをインポート
2:WhileLoopExampleクラスの定義
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ int型変数sumに0を代入し、合計値を初期化
  □ □ int型変数numberの宣言
  □ □ 「整数を入力してください(合計が100を超えたら終了します):」と出力
  □ □ while文にてsumが100以下である間ループを開始
  □ □ □ 「数値を入力: 」と出力
  □ □ □ ユーザーの入力を整数として読み取り、変数numberに代入
  □ □ □ 変数sumにnumberを加算
  □ □ □ 「現在の合計: 」とsumの値を出力
  □ □ 「最終的な合計: 」とsumの値を出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class WhileLoopExample {
    public static void main(String[] args) {
        /*【穴埋め問題1】
        ここでScannerオブジェクトscannerを作成し、ユーザーからの入力を受け取る準備をしてください。
        */

        int sum = 0; // 合計値を格納する変数
        int number;  // ユーザーが入力する数値を格納する変数
        
        System.out.println("整数を入力してください(合計が100を超えたら終了します):");
        
        // while文で条件を「合計が100を超えない」間に設定
        /*【穴埋め問題2】
        ここにwhileループを設定し、ユーザーの入力を取得して合計を表示するコードを書いてください。
        */

        System.out.println("最終的な合計: " + sum); // 最終結果を表示
    }
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
import java.util.Scanner;

public class WhileLoopExample {
    public static void main(String[] args) {
        // Scannerを使用してユーザーからの入力を受け取る
        Scanner scanner = new Scanner(System.in);
        
        // ユーザーに0を入力するまで数値を入力し続けるプログラム
        int sum = 0; // 合計値を格納する変数
        int number;  // ユーザーが入力する数値を格納する変数
        
        System.out.println("整数を入力してください(合計が100を超えたら終了します):");
        
        // while文で条件を「合計が100を超えない」間に設定
        while (sum <= 100) {
            System.out.print("数値を入力: ");
            number = scanner.nextInt(); // ユーザーの入力を取得
            
            sum += number; // 入力された数値を合計値に加算
            System.out.println("現在の合計: " + sum); // 現在の合計を表示
        }
        
        System.out.println("最終的な合計: " + sum); // 最終結果を表示
    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

Scannerを使った入力処理の準備

import java.util.Scanner;

importは他のJavaパッケージからクラスを使用するための文です。

ここではjava.util.Scannerをインポートし、ユーザーからの入力を受け取るためにScannerクラスを利用します。

Scanner scanner = new Scanner(System.in);

Scannerクラスのインスタンスを作成し、System.inを引数に渡すことで、ユーザーの入力を取得する準備をします。

変数の初期化

int sum = 0;
int number;
  • sumは入力された数値の合計を保存するための変数で、最初は0に設定されています。
  • numberはユーザーが入力する数値を一時的に保持するための変数です。

メッセージの表示

System.out.println("整数を入力してください(合計が100を超えたら終了します):");

ここでユーザーに入力の開始を促すメッセージを表示します。

繰り返し処理(while文)

while (sum <= 100) {
    System.out.print("数値を入力: ");
    number = scanner.nextInt();
    sum += number;
    System.out.println("現在の合計: " + sum);
}
  • while文は指定した条件がtrueの間、内部の処理を繰り返す文です。ここではsum <= 100が条件であり、合計が100を超えない間はwhile文内の処理が続きます。
  • ユーザーに「数値を入力: 」と表示し、nextInt()メソッドで入力を受け取ります。
  • 入力された数値をsumに加算し、最新の合計値を表示します。

このwhile文はユーザーが入力した数値を合計していき、合計が100を超えるとループが終了します。

終了メッセージ

System.out.println("最終的な合計: " + sum);

whileループを抜けた後に最終的な合計値を表示し、プログラムが終了します。

まとめ

このプログラムではwhile文を使った繰り返し処理の基本的な使い方を学べます。

今回の例では入力された数値の合計が100を超えるまで繰り返しが実行され、合計が100を超えた時点でループが終了する仕組みです。

このようなwhileループは、ユーザーの操作を待ちながら条件に応じて繰り返し処理を実行する際に便利です。

プログラムの動作を理解するため、ぜひこのコードを実行し、while文の挙動を体験してみてください!

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました