ループ
ループにより、プログラムは特定の操作を繰り返すことができます。このレッスンでは、Javaのループ構造を学びます。
forループ
forループは最も一般的に使用されるループ構造で、反復回数が既知の場合に最適です。
構文
JAVA
for (初期化; 条件; 更新) {
// ループ本体
}
例:1から10まで表示
JAVA
public class ForDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
実行フロー
TEXT
1. 初期化を実行(int i = 1)
2. 条件をチェック(i <= 10)
3. 条件がtrueの場合、ループ本体を実行
4. 更新を実行(i++)
5. ステップ2に戻る
例:1から100までの合計
JAVA
public class SumDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1から100までの合計: " + sum); // 5050
}
}
whileループ
whileループは反復回数が不明な場合に最適です。
構文
JAVA
while (条件) {
// ループ本体
}
例:数当てゲーム
JAVA
import java.util.Scanner;
import java.util.Random;
public class GuessGame {
public static void main(String[] args) {
Random random = new Random();
int target = random.nextInt(100) + 1;
Scanner scanner = new Scanner(System.in);
int guess = 0;
System.out.println("数当てゲーム(1-100)");
while (guess != target) {
System.out.print("推測を入力: ");
guess = scanner.nextInt();
if (guess > target) {
System.out.println("大きすぎます!");
} else if (guess < target) {
System.out.println("小さすぎます!");
} else {
System.out.println("おめでとうございます!正解です!");
}
}
scanner.close();
}
}
do-whileループ
do-whileループは少なくとも1回ループ本体を実行します。
構文
JAVA
do {
// ループ本体
} while (条件);
例:メニューループ
JAVA
import java.util.Scanner;
public class MenuDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("\n=== メインメニュー ===");
System.out.println("1. ゲーム開始");
System.out.println("2. 設定");
System.out.println("3. 終了");
System.out.print("選択してください: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("ゲーム開始...");
break;
case 2:
System.out.println("設定を開く...");
break;
case 3:
System.out.println("さようなら!");
break;
default:
System.out.println("無効な選択");
}
} while (choice != 3);
scanner.close();
}
}
💡 while vs do-while: whileは条件を先にチェックし、実行されない場合があります。do-whileは先に実行してからチェックするため、少なくとも1回の実行が保証されます。
for-eachループ
for-eachループは配列やコレクションを反復処理するために使用されます。
構文
JAVA
for (型 変数 : 配列またはコレクション) {
// 変数を使用
}
例:配列の反復
JAVA
public class ForEachDemo {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
// 通常のforループ
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
// for-eachループ
for (int num : numbers) {
System.out.println(num);
}
}
}
💡 使用タイミング: 要素のみが必要な場合はfor-eachを使用し、インデックスが必要な場合は通常のforを使用します。
breakとcontinue
break:ループを終了
JAVA
public class BreakDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // iが5の場合にループを終了
}
System.out.println(i);
}
// 出力: 1 2 3 4
}
}
continue:現在の反復をスキップ
JAVA
public class ContinueDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 偶数をスキップ
}
System.out.println(i);
}
// 出力: 1 3 5 7 9
}
}
ネストされたループ
ループは互いにネストすることができます。
例:九九の表
JAVA
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " × " + i + " = " + (i * j) + "\t");
}
System.out.println();
}
}
}
出力:
TEXT
1 × 1 = 1
1 × 2 = 2 2 × 2 = 4
1 × 3 = 3 2 × 3 = 6 3 × 3 = 9
...
例:三角形を表示
JAVA
public class TriangleDemo {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// スペースを表示
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// アスタリスクを表示
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
出力:
TEXT
*
***
*
***
*****
無限ループ
ループ条件が常にtrueの場合、無限ループが作成されます。
JAVA
// 無限ループの例(これはやらないでください)
while (true) {
System.out.println("無限ループ");
}
// 正しい無限ループ(終了条件付き)
while (true) {
// ユーザー入力を読み取る
String input = scanner.nextLine();
if (input.equals("exit")) {
break; // ユーザーが「exit」と入力したら終了
}
}
❓ よくある質問
Q forとwhileのどちらを選ぶべきですか?
A 反復回数が既知の場合はforを使用し、不明な場合はwhileを使用します。forはより簡潔で、whileはより柔軟です。
Q breakとreturnの違いは何ですか?
A breakは現在のループを終了し、returnはメソッド全体を終了します。
Q 複数のネストされたループを終了するにはどうすればいいですか?
A ラベル付きbreakを使用します。
outer: for(...) { for(...) { break outer; } }📖 まとめ
- forループは既知の反復用、whileループは不明な反復用
- do-whileは少なくとも1回ループ本体を実行
- for-eachは配列やコレクションの反復処理に使用
- breakはループを終了し、continueは現在の反復をスキップ
- ループはネスト可能;無限ループを避ける
📝 演習
- 合計: 1から100までのすべての奇数の合計を計算
- 階乗: 10の階乗を計算(10! = 10 × 9 × ... × 1)
- 九九の表: ネストされたループを使用して完全な九九の表を表示
次のレッスン
次のレッスンでは、配列を学びます — データのグループを保存して操作する方法を学びます。



