C# 多次元配列と多重ループ

多次元配列と多重ループ

多次元配列

インデックスが1つだけの配列を1次元配列といいます。

対して、インデックスが複数の配列を宣言することもできます。これを多次元配列といいます。

多次元配列の宣言方法

データ型[,] 変数名 = new データ型[要素数1, 要素数2];

int型の3×3の二次元配列を宣言する場合は以下のようになります。

int[,] data = new int[3, 3];

宣言と同時に初期値を渡す場合は以下のになります。

int[,] data = new[,]
{
    { 10, 11, 12 },
    { 20, 21, 22 },
};

多次元配列から値を取り出すのも、一次元配列とほぼ同じです。ブラケット構文で、それぞれの次元のインデックス番号を指定します。

Console.WriteLine(data[0, 1]);

多重ループ

ifと同様、繰り返し処理も入れ子構造にすることができます。

以下の例は九九の段を出力するプログラムです。

for(int i = 1; i < 10; i++) {
    for(int j = 1; j < 10; j++) {
        Console.Write($"{i * j, 2} ");
    }
    Console.WriteLine();
}

$"{i * j, 2} "i * jを最低でも2桁使って表示させる命令です。

forを使う際のカウンター変数はiからはじめj,k…とするのが一般的です。

多重ループは多次元配列と組み合わせて使うこともできます。

int[,] data =  new int[,]
{ 
    { 1, 2 }, 
    { 3, 4 }, 
    { 5, 6 }, 
    { 7, 8 },
};


for(int i = 0; i < data.GetLength(0); i++)
{
    for(int j = 0; j < data.GetLength(1); j++)
    {
        Console.Write($"{data[i, j]} ");
    }
    Console.WriteLine();
}

詳しくは以下を参照してください。

多次元配列

課題

レベルアップ問題集 > 二重ループメニュー > 二次元配列の出力

参考

「独習C#」2.5.3 配列型

「独習C#」4.3.3 ループのネストとbreak/continue命令