この記事で学べる知識: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
文は少なくとも一度は実行される点で異なります。
どちらの繰り返し構文も、状況に応じて使い分けると効果的です。
次回の節では、繰り返し処理の制御に役立つbreak
とcontinue
について学んでいきましょう。
練習問題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:Scannerクラスをインポート
2:WhileLoopExampleクラスの定義
□ mainメソッドの定義
□ □ Scannerオブジェクトscannerの初期化
□ □ int型変数sumに0を代入し、合計値を初期化
□ □ int型変数numberの宣言
□ □ 「整数を入力してください(合計が100を超えたら終了します):」と出力
□ □ while文にてsumが100以下である間ループを開始
□ □ □ 「数値を入力: 」と出力
□ □ □ ユーザーの入力を整数として読み取り、変数numberに代入
□ □ □ 変数sumにnumberを加算
□ □ □ 「現在の合計: 」とsumの値を出力
□ □ 「最終的な合計: 」とsumの値を出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
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を活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。