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

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:繰り返し処理(while文)

この記事の練習問題で使用する知識:
基礎構文(レッスン1)比較演算子と論理演算子分岐処理(if文)分岐処理(switch文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御配列エラーメッセージ例外処理の基礎

<<前の問題 問題集Top 次の問題>>

JAVAの文法「for文による繰り返し処理」とは

ここでは「for文による繰り返し処理」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。



プログラミングにおいて同じ処理を複数回繰り返したい場合がよくあります。

そのために使われるのが「繰り返し処理」です。繰り返し処理を利用することで、同じコードを何度も書く必要がなくなり、コードがシンプルでわかりやすくなります。

for文は繰り返しの回数が決まっている場合に便利な構文です。たとえば特定の範囲内で繰り返す処理にfor文がよく使われます。

for文の基本構文

for文の基本的な構文は以下の通りです。

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

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

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

以下に、1から5までの数字を順番に表示するfor文の例を示します。

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

このコードでは変数iが1から5までの値を順に取り、それぞれを表示します。i <= 5という条件がfalseになるとループが終了します。

「i++」は「i=i+1」を表しています。
この場合、まずi=1としてSystem.out.println(i)が実行され、その後iにi+1が代入される、すなわちi=2となってコードが繰り替えされます。

for文の使用例

たとえば、10回「Hello, World!」と表示したい場合、以下のようにfor文を使うことができます。

for (int i = 0; i < 10; i++) {
    System.out.println("Hello, World!");
}

また少し変則的ですが、以下のように書いても同じ出力となります。

for (int i = 11; i > 1; i=i-1) {
    System.out.println("Hello, World!");
}

まとめ

for文は特定の回数だけ処理を繰り返したい場合に便利な構文です。

初期化、条件、更新の3つの要素を使って、繰り返しの回数や内容を柔軟に制御できます。

次の節では、条件によって繰り返しを制御するwhile文について学びます。

JAVA練習問題2-4_分岐処理と繰り返し処理を使いこなそう

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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

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

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

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

ヒント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(); // スキャナーを閉じる
    }
}

この問題の穴埋めコードは以上です。

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

解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

********************

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 + " は奇数です。");
            }
        }
    }
}

********************

コードの解説

このプログラムは、ユーザーに0から100までの整数を入力してもらい、その数が偶数か奇数かを判定するものです。

繰り返し処理(ループ)と分岐処理(条件分岐)を使って、10回まで入力と判定を繰り返します。

初心者向けに、このプログラムの各部分をブロックごとに解説します。

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プログラムです。繰り返し処理を使ってユーザーから10回まで入力を受け付け、分岐処理でその入力が偶数か奇数かを判定して表示します。

  • 繰り返し処理(forループ): 決まった回数だけ処理を繰り返すために使います。
  • 分岐処理(if-else文): 条件に応じて異なる処理を実行するために使います。

この2つの重要な構文を理解することで、さらに複雑なプログラムを作成できるようになるでしょう。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る