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); //降序