Java while & do-whileループをマスター:ステップバイステップチュートリアル
Java whileおよびdo...whileループ
このチュートリアルでは、例を用いてJavaでのwhileおよびdo whileループの使い方を学びます。
コンピュータプログラミングでは、ループを使用してコードブロックを繰り返します。例えば、メッセージを100回表示したい場合、ループを使用できます。これは単純な例に過ぎず、ループでより多くのことが達成できます。
前のチュートリアルではJava forループについて学びました。ここではwhileとdo...whileループについて学びます。
Java whileループ
Javaのwhileループは、特定の条件が満たされるまで特定のコードを実行するために使用されます。whileループの構文は:
while (testExpression) {
// ループ本体
}
ここで、
whileループは括弧()内のtestExpressionを評価します。- testExpressionが
trueと評価される場合、whileループ内のコードが実行されます。 - testExpressionが再び評価されます。
- このプロセスはtestExpressionが
falseになるまで続きます。 - testExpressionが
falseと評価されると、ループが停止します。
条件について詳しくは、Java関係演算子と論理演算子を参照してください。
whileループのフローチャート

例1: 1から5までの数字を表示
// 1から5までの数字を表示するプログラム
class Main {
public static void main(String[] args) {
// 変数を宣言
int i = 1, n = 5;
// 1から5までのwhileループ
while(i <= n) {
System.out.println(i);
i++;
}
}
}
出力
1 2 3 4 5
このプログラムの動作は以下の通りです。
| 反復 | 変数 | 条件: i <= n | アクション |
|---|---|---|---|
| 1回目 | i = 1n = 5 | true | 1 を出力。 iは2になる。 |
| 2回目 | i = 2n = 5 | true | 2 を出力。 iは3になる。 |
| 3回目 | i = 3n = 5 | true | 3 を出力。 iは4になる。 |
| 4回目 | i = 4n = 5 | true | 4 を出力。 iは5になる。 |
| 5回目 | i = 5n = 5 | true | 5 を出力。 iは6になる。 |
| 6回目 | i = 6n = 5 | false | ループ終了 |
例2: 正の数のみの合計
// 正の数の合計を求めるJavaプログラム
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int sum = 0;
// Scannerクラスのオブジェクトを作成
Scanner input = new Scanner(System.in);
// ユーザーから整数入力を取得
System.out.println("数字を入力してください");
int number = input.nextInt();
// 入力された数字が正である間whileループ継続
while (number >= 0) {
// 正の数のみ加算
sum += number;
System.out.println("数字を入力してください");
number = input.nextInt();
}
System.out.println("合計 = " + sum);
input.close();
}
}
出力
数字を入力してください 25 数字を入力してください 9 数字を入力してください 5 数字を入力してください -3 合計 = 39
上記のプログラムでは、Scannerクラスを使用してユーザーから入力を取得しています。ここで、nextInt()がユーザーから整数入力を取得します。
whileループはユーザーが負の数を入力するまで継続します。各反復で、ユーザーが入力した数字がsum変数に加算されます。
ユーザーが負の数を入力するとループが終了し、最終的に合計が表示されます。
Java do...whileループ
do...whileループはwhileループと似ています。しかし、do...whileループの本体はテスト式がチェックされる前に1回実行されます。例えば、
do {
// ループ本体
} while(textExpression);
ここで、
- ループ本体が最初に実行され、その後textExpressionが評価されます。
- textExpressionが
trueと評価される場合、do文内のループ本体が再度実行されます。 - textExpressionが再び評価されます。
- textExpressionが
trueと評価される場合、do文内のループ本体が再度実行されます。 - このプロセスはtextExpressionが
falseと評価されるまで続きます。その後ループが停止します。
do...whileループのフローチャート

例3: 1から5までの数字を表示
// 1から5までの数字を表示するJavaプログラム
import java.util.Scanner;
// 1から100までの自然数の合計を求めるプログラム
class Main {
public static void main(String[] args) {
int i = 1, n = 5;
// 1から5までのdo...whileループ
do {
System.out.println(i);
i++;
} while(i <= n);
}
}
出力
1 2 3 4 5
このプログラムの動作は以下の通りです。
| 反復 | 変数 | 条件: i <= n | アクション |
|---|---|---|---|
i = 1n = 5 | チェックされない | 1 を出力。 iは2になる。 | |
| 1回目 | i = 2n = 5 | true | 2 を出力。 iは3になる。 |
| 2回目 | i = 3n = 5 | true | 3 を出力。 iは4になる。 |
| 3回目 | i = 4n = 5 | true | 4 を出力。 iは5になる。 |
| 4回目 | i = 5n = 5 | true | 6 を出力。 iは6になる。 |
| 5回目 | i = 6n = 5 | false | ループ終了 |
例4: 正の数の合計
// 正の数の合計を求めるJavaプログラム
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int sum = 0;
int number = 0;
// Scannerクラスのオブジェクトを作成
Scanner input = new Scanner(System.in);
// 入力された数字が正である間do...whileループ継続
do {
// 正の数のみ加算
sum += number;
System.out.println("数字を入力してください");
number = input.nextInt();
} while(number >= 0);
System.out.println("合計 = " + sum);
input.close();
}
}
出力 1
数字を入力してください 25 数字を入力してください 9 数字を入力してください 5 数字を入力してください -3 合計 = 39
ここでは、ユーザーが正の数を入力すると、その数がsum変数に加算されます。このプロセスは数字が負になるまで続きます。数字が負になるとループが終了し、負の数を加算せずに合計を表示します。
出力 2
数字を入力してください -8 合計 = 0
ここでは、ユーザーが負の数を入力しました。テスト条件はfalseになりますが、ループ内のコードは1回実行されます。
無限whileループ
ループの条件が常にtrueの場合、ループは無限回実行されます(メモリがいっぱいになるまで)。例えば、
// 無限whileループ
while(true){
// ループ本体
}
無限do...whileループの例:
// 無限do...whileループ
int count = 1;
do {
// ループ本体
} while(count == 1)
上記のプログラムでは、textExpressionが常にtrueです。したがって、ループ本体は無限回実行されます。
forループとwhileループ
forループは反復回数が既知の場合に使用されます。例えば、
for (let i = 1; i <=5; ++i) {
// ループ本体
}
whileとdo...whileループは一般的に反復回数が未知の場合に使用されます。例えば、
while (condition) {
// ループ本体
}
Java
- while文 vs do-while文:実践例で明確に比較
- Java変数とリテラル:包括的ガイド
- Javaの式、文、ブロックを理解する
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Javaクラスとオブジェクト:実践ガイド
- Java抽象クラスとメソッド:包括的ガイド
- Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
- Java throw vs throws:実践例でマスターする例外ハンドリング
- Javaオートボクシングとアンボクシング完全ガイド:実例とベストプラクティス
- Javaで回文数を判定する:while文とfor文を使ったアルゴリズム
- Javaオブジェクトとクラス:コアOOP概念を完全理解