【Java】レッスン2-4:for文による繰り返し処理を理解しよう

ながみえ

一つ前のページではswitch文による分岐処理について学習しました。

今回は for文による繰り返し処理 について見ていきましょう。

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:クラス

<<前のページ

学習記事一覧

次のページ>>

for文とは何か|最も基本的な繰り返し処理を理解しよう

Javaでプログラムを書く上で欠かせないのが「繰り返し処理」です。

中でもfor文は、決められた回数や条件に基づいて処理を繰り返すための基本構文で、配列の操作や条件付きループなど幅広い場面で活躍します。

この知識を身につければ、同じ処理を何十回も自動で実行できるようになり、手作業のコード記述を大幅に減らすことが可能になります。

この記事では、Java初心者でも理解しやすいように、for文の書き方・使い方・活用例を順序立てて解説します。

さあ、一緒にfor文の基礎をマスターして、Javaプログラミングの幅を広げましょう。

for文の基本|構文の書き方とシンプルなコード例

for文 とは、同じ処理を何度も繰り返すときに使う繰り返し構文(ループ)です。これを使用することで「決まった回数だけ処理をくり返す仕組み」を簡単に作ることができます。

for文の基本的な書き方は以下の通りです。

for (初期化; 条件; 更新) {
    // 繰り返したい処理
}

各部分の役割は次の通りです:

  • 初期化:ループが始まる前に一度だけ実行され、カウンタ変数 の初期値を設定します。
  • 条件:ループを続けるための条件です。この条件がtrueである間、ループが続きます。
  • 更新:ループが1回実行されるたびに行う処理です。通常はカウンタ変数を増加させます。

例えば、カウンタ変数iの値が1から5になるまで、単純に「変数iの値を出力するだけのコード」を繰り返し実行するコードを見てみましょう。

for (int i = 1; i <= 5; i++) {	// iの値が、1から始めて5になるまで、インクリメントしながら
    System.out.println(i);		// この処理を実行する
}

このコードを実行すると、以下のような順序で動作します。

  1. 初期化(変数iに1が代入される)
  2. i <= 5 の条件はTrueなので、処理を実行
  3. iをインクリメント し、iの値が2となって2周目へ
  4. i <= 5 の条件はTrueなので、処理を実行
  5. iをインクリメントし、iの値が3となって3周目へ
  6. iをインクリメントし、iの値が6となって6周目へ
  7. i <= 5 の条件はFalseなので、繰り返し処理を終了

すなわち、このコードを実行すると以下のように出力されます。

1
2
3
4
5

for文の実践例|1〜10の合計を計算するプログラム

もう少し実践的な例を見てみましょう。

以下のコードは変数iの値を1から10まで繰り返しながら、そこまでの合計値を出力していくコードです。

public class Main {
    public static void main(String[] args) {

        int sum = 0;	// 合計を入れる変数
      
        // iを1から10まで繰り返す
        for (int i = 1; i <= 10; i++) {	// iの値が、1から始めて10になるまで、インクリメントしながら
            sum += i; // sum = sum + i と同じ
            System.out.println("i = " + i + " のときの合計: " + sum);
        }
        System.out.println("最終的な合計: " + sum);
    }
}

このコードを実行すると、以下のように出力されます。

i = 1 のときの合計: 1
i = 2 のときの合計: 3
i = 3 のときの合計: 6
i = 4 のときの合計: 10
i = 5 のときの合計: 15
i = 6 のときの合計: 21
i = 7 のときの合計: 28
i = 8 のときの合計: 36
i = 9 のときの合計: 45
i = 10 のときの合計: 55
最終的な合計: 55

まとめ|for文で繰り返し処理を自分のものにしよう

本記事では、Javaのfor文について、基本的な書き方から実際のコード例までを学びました。

for文は、決められた回数や条件に基づいて処理を繰り返すための重要な構文であり、効率的なプログラム作成には欠かせません。

今回の学習を通して、シンプルな繰り返し処理や数値の集計などを、自分でコードに落とし込めるようになったはずです。

この知識を着実に活用しながら、より複雑な処理にも対応できるスキルを少しずつ積み重ねていきましょう。

練習問題|for文とif文を使った繰り返し処理プログラムに挑戦しよう

0から100までの整数を入力し、その数が偶数か奇数かを判定するプログラムを作成しましょう。

このプログラムは、ユーザーから10回整数を入力してもらい、その都度結果を表示します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scannerクラスを使用してユーザーから整数を入力すること。
  • 繰り返し処理を使用して10回入力を受け付けること。
  • 入力された整数が偶数か奇数かを判定するために、if文を使用すること。

ただし、以下のような実行結果となること。

0から100までの整数を入力してください: 4
4 は偶数です。
0から100までの整数を入力してください: 7
7 は奇数です。
0から100までの整数を入力してください: 10
10 は偶数です。
0から100までの整数を入力してください: 25
25 は奇数です。
0から100までの整数を入力してください: 36
36 は偶数です。
0から100までの整数を入力してください: 49
49 は奇数です。
0から100までの整数を入力してください: 50
50 は偶数です。
0から100までの整数を入力してください: 63
63 は奇数です。
0から100までの整数を入力してください: 88
88 は偶数です。
0から100までの整数を入力してください: 91
91 は奇数です。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1:Scannerクラスをインポート
2:EvenOddCheckerクラスの定義
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ forループを10回繰り返すように設定
  □ □ □ 「0から100までの整数を入力してください: 」と出力
  □ □ □ ユーザーの入力を整数として読み取り、変数numberに代入
  □ □ □ if文でnumberが偶数か奇数かを判定
  □ □ □ □ 真の場合、「number は偶数です。」と出力
  □ □ □ □ 偽の場合、「number は奇数です。」と出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class EvenOddChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        /*【穴埋め問題1】
        ここにfor文を使って繰り返し処理を10回行うコードを書いてください。
        */

            System.out.print("0から100までの整数を入力してください: ");

            /*【穴埋め問題2】
            ここにscannerを使って整数を入力し、それを変数numberに代入するコードを書いてください。
            */

            // 分岐処理で偶数か奇数かを判定する

            /*【穴埋め問題3】
            ここにif文を使って変数numberが偶数か奇数かを判定し、それに応じて出力を表示するコードを書いてください。
            */

        scanner.close(); // スキャナーを閉じる
    }
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
import java.util.Scanner;

public class EvenOddChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < 10; i++) { // 繰り返し処理を10回行う
            System.out.print("0から100までの整数を入力してください: ");
            int number = scanner.nextInt();

            // 分岐処理で偶数か奇数かを判定する
            if (number % 2 == 0) {
                System.out.println(number + " は偶数です。");
            } else {
                System.out.println(number + " は奇数です。");
            }
        }
    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

Scannerのインポートとスキャナーの初期化

import java.util.Scanner;

public class EvenOddChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

この部分では、ユーザーの入力を受け取るためにScannerクラスをインポートし、そのインスタンスを作成しています。

Scannerは、キーボードから入力を受け取るために使用するJava標準ライブラリのクラスです。new Scanner(System.in)で、入力を受け付けるための準備をしています。

繰り返し処理 (forループ)

for (int i = 0; i < 10; i++) { // 繰り返し処理を10回行う

この行では、forループを使って10回繰り返し処理を行うようにしています。i = 0から始まり、i < 10の間はループが続きます。つまり、iが0から9までの10回、繰り返し処理を行います。

  • 初期化: i = 0 でカウンタ変数iを初期化。
  • 条件: i < 10 で、iが10未満である限りループが続く。
  • 増分: i++ で、ループのたびにiを1ずつ増やす。

ユーザー入力の受け取り

System.out.print("0から100までの整数を入力してください: ");
int number = scanner.nextInt();

System.out.printでメッセージを表示し、ユーザーに0から100までの整数を入力してもらいます。

scanner.nextInt()を使って、ユーザーが入力した整数をnumberという変数に格納します。この操作を10回繰り返すことになります。

分岐処理 (if文とelse文)

if (number % 2 == 0) {
    System.out.println(number + " は偶数です。");
} else {
    System.out.println(number + " は奇数です。");
}

ここでは、分岐処理を行っています。if文を使って、ユーザーが入力した数numberが偶数か奇数かを判定します。

  • number % 2 == 0 では、numberを2で割った余りが0であるかどうかを確認します。余りが0の場合、その数は偶数です。
  • elseは、上記の条件が成り立たない(つまり、奇数である)場合に実行される処理です。
もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました