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

ながみえ

一つ前のページでは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:クラス

<<前のページ

学習記事一覧

次のページ>>

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

Javaで繰り返し処理を行う方法の一つにwhile文があります。

while文は、指定した条件が真である限り処理を繰り返す構文で、繰り返し回数が事前に決まっていない場合や、条件によって処理を継続・終了させたい場合に有効です。

また、条件判定の位置が異なるdo-while文を理解すれば、より柔軟なループ処理を実装できるようになります。

この知識を身につけることで、ユーザー入力の監視や特定条件までの反復処理など、現実的な場面に即したプログラムを組めるようになります。

さあ、繰り返し処理の幅を広げる一歩を踏み出しましょう。

while文とは何か|基本的な書き方と簡単なコード例

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

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

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

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

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

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

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

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

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

このコードの実行結果は以下の通りです。

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

do-while文とは何か|while文との違いを理解しよう

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

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

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

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

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

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

この例ではdoブロック内の処理がまず実行され、その後で条件がチェックされます。最終的にcountが6となった段階で条件がfalseとなり、ループが終了します。

while文の場合と違い、最低でも1回はループが実行される点に注目しましょう。

まとめ|

本記事では、while文とdo-while文について、その基本構文や使い方、そして両者の違いを学びました。

while文は条件が真の間繰り返し処理を行い、do-while文は少なくとも一度は処理を実行するという特徴があります。

これらを理解することで、事前に繰り返し回数がわからない場合や、条件によって処理を柔軟に制御するプログラムを組めるようになりました。

今後もこの知識を活用しながら、より多様な条件や処理を扱えるスキルを少しずつ積み重ねていきましょう。

練習問題|while文で合計が100を超えるまで数値を入力するコードを書こう

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

このプログラムではユーザーが入力する数値の合計が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ループを抜けた後に最終的な合計値を表示し、プログラムが終了します。

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

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

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

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました