鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所 陣列與字串 鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
程式 ArrayAccess (1/3) using System; namespace ArrayAccess { class Program /* 示範一維陣列之宣告與存取 * 3/10/2007 */ static void Main(string[] args) const int N = 6; int[] intArray = new int[N]; for (int i = 0; i < N; i++)
程式 ArrayAccess (2/3) intArray[i] = i * 10; } Console.WriteLine( for (int i = 0; i < N; i++) { "intArray[{0}] : {1} ", i, intArray[i]); string[] strArray = { "這", "是", "陣列", "測試", "!!" }; "以下列出陣列物件strArray的所有元素值"); for (int i = 0; i < strArray.Length; i++)
程式 ArrayAccess (3/3) Console.WriteLine( "strArray[{0}] : {1} ", i, strArray[i]); } "陣列strArray的長度為{0},開始索引值為{1}, 結束索引值為{2} \n", strArray.Length, strArray.GetLowerBound(0), strArray.GetUpperBound(0)); Console.ReadLine();
一維陣列 一維陣列與陣列索引 int[] intArray = new int [6]; intArray[0] intArray[3]
一維陣列物件特性 陣列長度 Length 陣列開始索引值 GetLowerBound(0) 陣列結束索引值 GetUpperBound(0)
練習 寫一程式,用迴圈輸入3位同學成績到一維陣列,再用迴圈把陣列長度及所有成績印出來. 修改上述程式, 使同學人數可以在程式執行時決定.
程式 Array2D (1/3) using System; namespace Array2D { class Program /* * 示範矩形陣列的使用 * 3/12/2007 */ static void Main(string[] args) const int N_ROW = 3; const int N_COL = 6; string[,] strArray = new string[N_ROW, N_COL];
程式 Array2D (2/3) Console.WriteLine( "strArray 是{0} X {1} 的{2} 維陣列\n", N_ROW, N_COL, strArray.Rank); for (int i = 0; i < N_ROW; i++) { for (int j = 0; j < N_COL; j++) strArray[i, j] = "value" + i.ToString() + j.ToString(); } Console.WriteLine("以下為strArray內含的元素\n");
程式 Array2D (3/3) Console.WriteLine("第{0} 列\n", i); for (int j = 0; j < N_COL; j++) { Console.WriteLine("strArray[{0},{1}]: {2}", i, j, strArray[i, j]); } Console.WriteLine(); Console.ReadLine();
矩形陣列 int[ , ] intArray = new int [3, 6]; intArray[0,0] intArray[0,5]
練習 寫一程式,設值及印出3階魔方陣(河圖洛書)
程式 Array2DA (1/3) using System; namespace Array2DA { class Program /* * 示範不規則二維陣列之使用 */ static void Main(string[] args) const int N_ROW = 3; string[][] strArray = new string[N_ROW][]; for (int i = 0; i < N_ROW; i++) strArray[i] = new string[i + 2]; }
程式 Array2DA (2/3) for (int i = 0; i < N_ROW; i++) { for (int j = 0; j < strArray[i].Length; j++) strArray[i][j] = "value" + i + j; } Console.WriteLine( "以下為strArray[{0}]所包含的元素\n", i); Console.Write(strArray[i][j] + " : ");
程式 Array2DA (3/3) Console.WriteLine("\n"); } Console.ReadLine();
不規則二維陣列 int[][] intArray = new int [3]; intArray[0,0] intArray[0,1]
練習 宣告並由使用者輸入一個不規則二維陣列, 此一陣列共三列, 每列的長度分別為1, 2, 3。
程式 StringManipulation (1/6) using System; namespace StringManipulation { /* * 示範字串之處理方式 * skj 3/1/2008 */ class Program static void Main(string[] args) string name = "Thomas"; Console.WriteLine(" name = {0}", name);
程式 StringManipulation (2/6) // 印出字串長度 Console.WriteLine(" length of name = {0}", name.Length); // 比較字串 string name1 = "Thomas"; int result = String.Compare( name, name1 ); if (result == 0) { Console.WriteLine( " \"{0}\" and \"{1}\" are equal", name, name1); }
程式 StringManipulation (3/6) else if (result > 0) { Console.WriteLine( " \"{0}\" is greater than \"{1}\" ", name, name1); } else " \"{0}\" is less than \"{1}\" ", name, name1);
程式 StringManipulation (4/6) // 連結字串 string concatedString = String.Concat(name, name1); Console.WriteLine( " \"{0}\" and \"{1}\" are concatenated as \"{2}\" ", name, name1, concatedString); // 字串設值 string newString = name; " newString is assigned as \"{0}\" ", newString);
程式 StringManipulation (5/6) // 字串複製 string nameCopy = String.Copy(name); Console.WriteLine( " nameCopy is assigned as \"{0}\" ", nameCopy); // 清除name name = String.Empty; Console.WriteLine("After setting Empty..."); Console.WriteLine(" name = {0}", name); // 檢視newString 與nameCopy " newString becomes \"{0}\" ", newString); " nameCopy becomes \"{0}\" ", nameCopy);
程式 StringManipulation (6/6) // 字串格式化 const int N = 3; string[] tag = new string[N]; for (int i = 0; i < N; ++i) { tag[i] = String.Format( "tag{0}: serial number = {1}", i, i * 100); } Console.WriteLine(tag[i]);
練習 宣告一個字串陣列dictionary[3],內存”Alpha”、 “Beta” 、”Gamma” ,然後輸入一個字串,決定它是dictionary內的第幾個元素並印出註標。如果不在dictionary內,則印出-1。