006 繰り返し(for文) 005 解答例

public class ForLoopWithBlockUpdate {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.print("Number: " + i);

            // 偶数の場合は3倍にして表示
            if (i % 2 == 0) {
                System.out.println(" (Tripled: " + (i * 3) + ")");
                i *= 3; // ブロック内での更新式
            } else {
                System.out.println();
            }
        }
    }
}

このプログラムでは、forループのブロック内でiが偶数の場合に3倍にし、それに基づいてiを更新しています。このような条件に基づく更新は、ブロック内でのみ実行されるため、通常のfor文の更新とは異なる結果が得られます。

for文のブロックの中で更新式を書く

for文の構造では、更新式は通常ループのブロックの外に書かれますが、必ずしもそのように制約されているわけではありません。Javaでは、for文のブロック内にも更新式を書くことができます。これは、ある条件が成り立つときに特定の処理を実行し、その後に更新式を行う場合などに便利です。

以下は、for文のブロック内で更新式を書く例です:

public class ForLoopWithUpdateInsideBlock {
    public static void main(String[] args) {
        // for文のブロック内で更新式を書く
        for (int i = 1; i <= 5; i++) {
            System.out.println("Loop iteration: " + i);
            
            // ブロック内の処理
            if (i < 5) {
                System.out.println("Updating i inside the block.");
                i += 2; // 更新式
            }
        }
    }
}

この例では、forループのブロック内でiを出力し、iが5未満の場合に更新式 i += 2 を使ってiを2ずつ増加させています。ブロック内での更新は条件に基づいて特定のタイミングで行われ、通常のfor文の更新式とは異なります。このような使い方は特殊な場合に限られるかもしれませんが、柔軟性があります。

「006 繰り返し」問題集リスト