C#數組
使用數組,快速入門:
1. 聲明數組 --> int [] 數組名稱; //注意和Java不一樣中括號必須在中間
2. 開辟空間 --> 數組名稱 = new 數組類型[指定數組長度]; //new=數據空間 地址空間
3. 給數組賦值 --> 數組名稱[下標] = 值; //注意要類型匹配
4. 使用數組 --> 數組名稱[下標]
1 //定義數組 2 int[] num; 3 //開辟空間 4 num = new int[10]; 5 //給數組賦值 6 num[0] = 1; 7 //使用數組 8 int num = num[0];
合二為一
數組類型 [] 數組名稱 = new 數組類型[長度];
合三為一
1. 數組類型 [] 數組名稱 = {值1,值2.....};
2. 數組類型 [] 數組名稱 = new 數組類型[長度]{值1,值2.....}; //注意長度必須和值的長度匹配,或者長度可以不給 ,Java不能用這樣方式
3. 數組類型 [] 數組名稱 = new 數組類型[]{值1,值2.....}; //注意長度必須和值的長度匹配,或者長度可以不給 ,Java不能用這樣方式
1 int[] num = { 1, 2, 3, 4 }; 2 int[] num2 = new int[] { 1, 2, 3, 4 }; 3 int[] num3 = new int[4] { 1, 2, 3, 4 };
循環遍歷數組
* 如果只是簡單的遍歷數組,優先使用foreach
* 當在循環中需要改變數組中的元素,或數組的元素發生改變,就必須使用for循環
1 //foreach遍歷 2 foreach (int num in nums) 3 { 4 Console.WriteLine(num); 5 } 6 //for循環 改變數組的元素 7 for (int i = 0; i < nums.Length; i++) 8 { 9 nums[i] = 1;//把全部數組的元素都改為1 10 Console.WriteLine(nums[i]); 11 } 12 13 //錯誤寫法 14 foreach (int num in nums) 15 { 16 num = 1;//把全部數組的元素都改為1 17 Console.WriteLine(num); 18 } 19 出現的錯誤信息:'num"是一 個foreach迭代變量”,無法為它賦值 所以不可以使用foreach改變數組中的元素,輸出遍歷還是可以的
數組的常用方法
Max()和Min()
max查找數組中值最大的元素,min查找數組中最小的元素
使用方法-->數組名稱.Max(); 返回值:int類型
//定義數組 int[] array = new int[10]; //輸出最大值 int max = array.Max(); //輸出最小值 int min = array.Min(); Console.WriteLine("\n最大值:{0},最小值:{1}",max,min);
Contains()
判斷數組是否包含內容:(目前發現只可以判斷int類型)
1 bool result = array.Contains(number);
Sum()
計算數組中的數值的總和:
1 int sum = array.Sum();
Count()
獲取數值元素的總數:
1 int arrayCount = array.Count();
2 Console.WriteLine("數組一共有多少元素:"+arrayCount);
數組類常用的靜態方法
靜態方法使用類打點使用 Array.....
IndexOf()
查找數組中的元素,返回下標
int index = Array.IndexOf(array數組, number自定義內容);
LastIndexOf()
查找數組中的元素,返回最后一個元素的下標
int index = Array.LastIndexOf(array數組, number自定義內容);
Sort()
升序排序數組的元素,可以排序數字和字母
Array.Sort(需要排序的數組);
Reverse()
降序排序數組的元素,可以排序數字和字母
Array.Reverse(需要排序的數組);
案例1
從控制台輸入5個商品的名稱, 將名稱保存到數組,輸出第三個商品的名稱
1 //定義數組 2 String [] commoditys = new String [5]; 3 //從控制台輸入5個商品的名稱, 將名稱保存到數組,輸出第三個商品的名稱 4 for (int i = 0; i < 5; i++) 5 { 6 //控制台輸入信息 7 Console.Write("請輸入第{0}個商品的信息:",(i+1)); 8 commoditys[i] = Console.ReadLine(); 9 } 10 Console.WriteLine(commoditys[2]); 11 //防止一閃而過 12 Console.ReadLine();
案例二
從控制台輸入5個學員的成績,保存到數組,輸出平均分
1 //定義數組 2 int [] scores = new int[5]; 3 4 //計算平均分 5 double avg = 0; 6 double sum = 0; 7 for (int i = 0; i < scores.Length; i++) 8 { 9 Console.Write("請輸入第{0}個學員的成績:",(i+1)); 10 scores[i] = Convert.ToInt16(Console.ReadLine()); 11 sum += scores[i]; 12 } 13 avg = sum * 1.0 / scores.Length; 14 15 Console.Write("平均分是:{0}", avg); 16 //防止一閃而過 17 Console.ReadLine();
案例三
從控制台輸入10位顧客的年齡,保存到數組,
輸出年齡大於35歲的比例以及最大年齡
1 //定義數組 2 int[] ages = new int[10]; 3 //計數比例 4 double count = 0; 5 //for循環 6 for (int i = 0; i < ages.Length; i++) 7 { 8 Console.Write("請輸入第{0}位客戶的年齡:",(i+1)); 9 ages[i] = int.Parse(Console.ReadLine()); 10 if (ages[i] > 35) 11 { 12 count++; 13 } 14 } 15 //計算比例 16 count = count / ages.Length ; 17 //最大值 18 int maxAge = ages.Max(); 19 Console.WriteLine("比例:{0},最大年齡:{1}",count,maxAge); 20 Console.ReadLine();
這里用到了數組的一個方法,Max=獲取數組中的最大值
案例四
存在輸出數字X存在於數組,下標是? ,不存在就輸出數字X不存在
1 //隨機數 2 Random random = new Random(); 3 //定義數組 4 int[] nums = new int[10]; 5 //控制台輸入 6 Console.Write("請輸入任意數字:"); 7 int number = int.Parse(Console.ReadLine()); 8 Console.Write("\n排序前:"); 9 10 //下標 11 int index = -1; 12 //生成隨機數 獲取下標 13 for (int i = 0; i < nums.Length; i++) 14 { 15 nums[i] = random.Next(100); 16 Console.Write("{0},",nums[i]); 17 if (nums[i] == number) 18 { 19 index = i; 20 } 21 } 22 23 //升序排序 24 Array.Sort(nums); 25 Console.Write("\n排序后:"); 26 for (int i = 0; i < nums.Length; i++) 27 { 28 Console.Write("{0},", nums[i]); 29 } 30 31 //判斷是否包含該輸入的數字 32 if (index != -1) 33 { 34 Console.WriteLine("\n數字{0}存在於數組,下標是:{1}",number,index); 35 } 36 else 37 { 38 Console.WriteLine("\n數字{0}不存在於數組",number); 39 } 40 41 Console.ReadLine();
第二種方式
1 //隨機數 2 Random random = new Random(); 3 //定義數組 4 int[] nums = new int[10]; 5 //控制台輸入 6 Console.Write("請輸入任意數字:"); 7 int number = int.Parse(Console.ReadLine()); 8 Console.Write("\n排序前:"); 9 10 11 //生成隨機數 獲取下標 12 for (int i = 0; i < nums.Length; i++) 13 { 14 nums[i] = random.Next(100); 15 Console.Write("{0},",nums[i]); 16 } 17 18 //升序排序 19 Array.Sort(nums); 20 Console.Write("\n排序后:"); 21 for (int i = 0; i < nums.Length; i++) 22 { 23 Console.Write("{0},", nums[i]); 24 } 25 26 //是否包含... 27 bool result = nums.Contains(number); 28 29 ////判斷是否包含該輸入的數字 30 if (result) 31 { 32 int index = Array.IndexOf(nums,number); 33 Console.WriteLine("\n數字{0}存在於數組,下標是:{1}",number,index); 34 } 35 else 36 { 37 Console.WriteLine("\n數字{0}不存在於數組",number); 38 } 39 40 Console.ReadLine();
案例五
1 //定義數組 2 char[] strs = {'a','c','u','b','e','p','f','z'}; 3 Console.Write("原序:"); 4 foreach (char str in strs) 5 { 6 Console.Write(" {0}",str); 7 } 8 9 //升序 10 Array.Sort(strs); 11 Console.Write("\n升序:"); 12 foreach (char str in strs) 13 { 14 Console.Write(" {0}", str); 15 } 16 17 //降序 18 Array.Reverse(strs); 19 Console.Write("\n逆序:"); 20 foreach (char str in strs) 21 { 22 Console.Write(" {0}", str); 23 } 24 Console.ReadLine();
需要用到Array類的靜態方法進行排序
* Array.Sort(strs); //升序
* Array.Reverse(strs); //降序