Javaのwhile文とは?条件がtrueの間くり返す仕組みを初心者向けに解説

本記事は、Schooの「Java入門 初級【2026年版】」第4回「繰り返し処理」を学んだあとに、while文がいつ続き、どこで終わるのかを整理したい方向けのステップアップ学習記事です。
ただし、Schooを受講していない方でも、Javaの基本を学び始めたばかりであれば読み進められる内容にしています。
Schoo コースページ:Java入門 初級【2026年版】
while文では、最初に条件式を確認し、true の間だけブロック内をくり返します。大切なのは「いつfalseになるか」をコードから見つけることです。
while文は条件がtrueの間だけ続く
ファイル名: CountLoop.java
public class CountLoop {
public static void main(String[] args) {
int count = 1;
while (count <= 3) {
System.out.println(count + "回目");
count++;
}
}
}
実行結果
1回目 2回目 3回目
count++ により値が1ずつ増えます。countが4になると count <= 3 はfalseになり、while文を抜けます。
入力によってwhile文を終える例
ここでは、入力によってwhile文を終える仕組みを学びます。continueFlagは、この例の中で「次の周も続けるか」を覚えておくboolean型の変数です。最初はtrueなのでwhile文に入ります。入力がnだったときだけfalseに変え、次の判定でwhile文を終わらせます。
ファイル名: GreetingLoop.java
import java.util.Scanner;
public class GreetingLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean continueFlag = true;
while (continueFlag) {
System.out.println("こんにちは");
System.out.print("続けますか?(y/n):");
String input = scanner.nextLine();
if (input.equals("n")) {
continueFlag = false;
}
}
System.out.println("終了します。");
}
}
見る場所は2か所です。boolean continueFlag = true;で開始時の値を決め、continueFlag = false;で終了する値へ変えています。下のツールでは、この2か所の間にある入力と次の判定の順番を確認できます。
nを入力したあと、いつwhile文は終わる?
使い方:まず「y」を押してループが続くことを確認し、次に「n」を押してください。nを受け取った直後ではなく、次の条件判定でループが終わることを確かめるツールです。
入力する
continueFlag:true
コードがたどる順番
終了条件が変わらないと無限ループになる
while文の中で条件に関係する値を変えないと、いつまでもtrueのままです。実行前に「何が変わることでfalseになるか」を声に出して確認すると、無限ループを防ぎやすくなります。
入力を受け取って続ける例
ファイル名: GreetingInputLoop.java
import java.util.Scanner;
public class GreetingInputLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("n")) {
System.out.println("こんにちは");
System.out.print("続けますか?(y/n):");
input = scanner.nextLine();
}
System.out.println("終了します。");
}
}
最初のinputは空文字なので、最初は !input.equals("n") がtrueです。入力がnになった次の判定でfalseとなり、ループが終わります。
0が入力されるまで数値を合計する例
合計する課題では、numが0かどうかをwhile文の条件に使います。ループの最後で次の入力をnumへ入れないと、最初の値だけを何度も判定してしまいます。
ファイル名: NumberSumLoop.java
import java.util.Scanner;
public class NumberSumLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = 0;
System.out.print("数値を入力してください(0で終了):");
int num = scanner.nextInt();
while (num != 0) {
total += num;
System.out.println("現在の合計:" + total);
System.out.print("数値を入力してください(0で終了):");
num = scanner.nextInt();
}
System.out.println("最終合計:" + total);
}
}
最初の入力はwhile文に入る前に受け取ります。その後は、合計を更新したあとで次の入力を受け取り、次の周の条件判定に使います。0を入力すると次の判定がfalseになり、0は合計へ足されません。
よくあるエラー
while (input = "n") のように = を使うと、比較ではなく代入になりコンパイルエラーになります。文字列の内容を比べるときは input.equals("n") を使います。
確認問題
- countを1から5まで表示するwhile文を書いてください。
- 0が入力されるまで数値を受け取り、入力された回数を数える処理を考えてください。
- while文が終わらないとき、最初に確認する値は何ですか。
演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。
あわせて読みたい関連記事
まとめ
while文は、条件がtrueの間だけ処理を続けます。条件を変える値と、falseになるタイミングを必ず確認しましょう。回数が決まっていない入力処理では、while文が特に役立ちます。