【JAVA】レッスン2-05:while文による繰り返し処理を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:while文による繰り返し処理

この記事の練習問題で使用する知識:
基礎構文(レッスン1)比較演算子と論理演算子分岐処理(if文)分岐処理(switch文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御配列エラーメッセージ例外処理の基礎

<<前のページ 問題集Top 次のページ>>

JAVAの「while文による繰り返し処理」とは

この章ではJAVAにおける「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文は条件がtrueのときのみ実行されるため、ループに入るかどうかを事前に判定します。一方do-while文は少なくとも一度は実行される点で異なります。

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

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

練習問題2-5:合計値が100を超えるまで数値を入力し続けるプログラムを作成しよう

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

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

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

この問題の要件

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

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

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

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

この問題を解くヒント

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

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

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

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

ヒント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); // 最終結果を表示
    }
}

以上がこの問題の穴埋めコードです。

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

解答例と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

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); // 最終結果を表示
    }
}

正解コードの解説

このプログラムはユーザーに数値を繰り返し入力してもらい、合計が100を超えるまで加算を続けるシンプルなプログラムです。

途中経過の合計が画面に表示され、合計が100を超えたら終了します。

ここでは各部分の詳細を解説していきます。

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文の挙動を体験してみてください!

<<前のページ 問題集Top 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る