【Java】レッスン2-05:while文とdo-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:クラス編
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
文は少なくとも一度は実行される点で異なります。
どちらの繰り返し構文も、状況に応じて使い分けると効果的です。
次回の節では、繰り返し処理の制御に役立つbreak
とcontinue
について学んでいきましょう。
練習問題|while文で合計が100を超えるまで数値を入力するJavaプログラム

ユーザーに整数を次々と入力してもらい、その合計値を表示するプログラムを作成しましょう。
このプログラムではユーザーが入力する数値の合計が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); // 最終結果を表示 } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
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
文の挙動を体験してみてください!