今回の記事の内容
変数が増えてくると一つ一つ宣言をしていくのは面倒なので、そこで便利な「配列」を作ってプログラムを簡潔にしてみましょう
配列
配列の宣言
型名[] 変数名(配列名); 変数名(配列名) = new 型名 [要素数];

static void Main(string[] args) { float[] temperature; //配列の変数宣言 temperature = new float[7]; //配列の要素数 //配列の要素に代入 temperature[0] = 35.6f; temperature[1] = 36.1f; temperature[2] = 35.2f; temperature[3] = 35.0f; temperature[4] = 36.2f; temperature[5] = 35.2f; temperature[6] = 35.7f; //配列の値を表示 for (int i = 0; i < 7; i++) { Console.WriteLine(temperature[i]); } }
配列は0から数えます
数字の後の「f」は型名の「float」の頭文字です int型なら「i」といったようになります
配列の宣言は2行で行いましたが、まとめて書くこともできます
型名 変数名(配列名) = new 型名 [要素数]
つまりここでは、
float[] temperature = new float[7];
と、宣言することもできます
配列の全要素数
要素数を取得
配列の変数名.Length

static void Main(string[] args) { { //配列初期化 float[] temperature = {35.6f, 36.1f, 35.2f, 35.0f, 36.2f, 35.2f, 35.7f, 36.3f, 34.1f, 35.6f, 36.6f}; //[変数名.Length]で全要素を表示 for (int i = 0; i < temperature.Length; i++) { Console.WriteLine(temperature[i]); } } }
for (int i = 0; i < temperature.Length; i++)と記述
要素数が5個の時はfor (int i = 0; i < 5; i++)、
要素数が15個の時はfor (int i = 0; i < 15; i++)のように自動補完してくれます
配列の変数名.Lengthを使用すれば要素数が変わってもプログラムを書き換えなくてもいいので、配列の変数名.Lengthの使用を推奨します
配列の応用
配列(数値)の平均値

2次元配列
今までのプログラムはただ値を並べてるだけでした
行と列に並べて配列することができます
2次元配列
型名[,]配列名 = new 型名[行の個数,列の個数]{ {値,値,値...}, {値,値,値...}. {値,値,値...},... };

class Project01 { public static void Main() { Form slime = new Form(); slime.Text = "勇者スライム"; slime.Width = 250; slime.Height = 100; string[,] str = new string[4, 3] { {"スライム", "HP10", "MP2" }, {"ラーミア", "HP3000", "MP500"}, {"イノブタマン", "HP30", "MP10" }, {"ムドー", "HP1500", "MP200" } }; Label lb = new Label(); lb.Width = slime.Width; lb.Height = slime.Height; string tmp = ""; for (int i = 0; i < 4; i++) { tmp += "(" ; for (int j = 0; j < 3; j++) { tmp += str[i, j]; tmp += ","; } tmp += ")\\n"; } lb.Text = tmp; lb.Parent = slime; Application.Run(slime); } }
string[,] str = new string[4, 3]で4行×3列の配列を作成しています
ジャグ配列
行と列が決まってない配列をジャグ配列と呼びます
型名[][]配列名 = new 型名[要素数][]{ new 型名[0番目の要素数]; new 型名[1番目の要素数]; ... };

class Project01 { public static void Main() { Form slime = new Form(); slime.Text = "勇者スライム"; slime.Width = 250; slime.Height = 100; ``` string[] [] str = new string[4] [] { new string[] {"スライム", "HP10", "MP2" }, new string[] {"ラーミア", "HP3000", "MP500", "ラーミアの卵"}, new string[] {"イノブタマン", "HP30", "MP10" }, new string[] {"ムドー", "HP1500", "MP200", "魔術の杖" } }; Label lb = new Label(); lb.Width = slime.Width; lb.Height = slime.Height; string tmp = ""; for (int i = 0; i < str.Length; i++) { tmp += "(" ; for (int j = 0; j < str[i].Length; j++) { tmp += str[i] [j]; tmp += ","; } tmp += ")\\n"; } lb.Text = tmp; lb.Parent = slime; Application.Run(slime); } ``` }