C#数组


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM