006 繰り返し(for文のネスト) 007 解答例

public class DownwardTriangle {
    public static void main(String[] args) {
        // 下向きの三角形を表示するプログラム
        int rows = 5; // 行数を指定

        for (int i = rows; i >= 1; i--) {
            for (int j = 1; j <= i; j++) {
                // "*"を表示
                System.out.print("*");
            }
            // 1つの行を表示したら改行する
            System.out.println();
        }
    }
}

このプログラムでは、外側のfor文でiを行数とし、内側のfor文で各行ごとに”“を表示しています。外側のループが進むにつれて、内側のループにより”“の数が減少していくことで、下向きの三角形が表示されます。上記の例では、rows変数を使って行数を指定し、プログラムが入力された行数に対して適切に動作するようにしています。

ネストされたfor文で外側のfor文の変数を内側のfor文で参照する

ネストされたfor文で外側のfor文の変数を内側のfor文で参照することは一般的であり、これによって外側のループ変数が内側のループでの動作に影響を与えることができます。

  1. 変数のスコープ:
    • プログラム内で変数が宣言されると、その変数はスコープ内で有効です。ネストされたfor文の場合、外側のfor文で宣言された変数は内側のfor文でも参照可能です。
  2. 変数の再利用:
    • 外側のfor文で宣言された変数は、内側のfor文でも再利用できます。これにより、外側の変数が内側のfor文に渡され、内側で利用されることがあります。

例: 三角形の表示

public class NestedTriangles {
    public static void main(String[] args) {
        int rows = 5;

        // 外側のfor文で行数を指定
        for (int i = 1; i <= rows; i++) {
            // 内側のfor文で各行ごとに"*"を表示
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }

            // 外側のfor文の変数を使用して改行と空白を調整
            for (int k = 1; k <= rows - i; k++) {
                System.out.print(" ");
            }

            // 改行
            System.out.println();
        }
    }
}

この例では、外側のfor文の変数 i を使用して、各行ごとに”“を表示しています。そして、外側の変数 i を利用して、内側のfor文での”“の表示と空白の調整を行っています。これにより、下向きの三角形が表示され、各行ごとに空白が追加されています。

このJavaプログラムを実行した場合、以下のような出力が得られます。行数が5の場合の例です。

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

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