“
相同的类型的若干变量按照有序的形式组织起来,这种集合,我们把它称之为数组!
”
入门第六篇,有讲到数据类型和变量。变量很大一部分作用是为了存储程序在计算过程中产生的临时数据,或预定义数据。但是在实际业务场景中,往往一个业务逻辑会需要用到大量的数据,那么此时再去挨个定义变量显然变得不那么合理。如:程序要求计算当前公司所有员工的平均年龄。
int age1,age2,age3,age4,age5.....;
显然,这种有规则的重复定义并不方便,显得冗余(冗余rǒngyú)
我们只需要这样去定义一个数组
int [] ages = {18,19,20,21,18,19,25,26,31,24};
//定义了一个名为ages的Int类型数组,其中包括18,19,20,21,18...等10个数据。
语法:
数组中的每一项,我们可以把它看做一个元素,如果想要获取某一个指定元素的值,就需要根据数组的下标去获取。数组的下标从0开始,网络恶搞程序员计数是从0开始的梗就是这么来的。如图:
ages[0];//获取数组中下标为0的值
ages[3];//获取数组中下标为3的值。
任意一个值,所在的位置-1,就是其下标。比如第一个值,下标就是0。最后一个值,就是数组的长度-1。如,数组长度是10,那么最后一个值的下标就是9。下标取值的语法是:
数组名[下标];
Ps,"下标"我们也称为"索引"。一个意思,理解层面来说,我们都可以理解为编号。而这种编号往往具备唯一性!
数组长度的获取语法为:
数组变量.Length;
如:
ages.Length;
例题:
定义一个数组存储所有员工的年龄。并且使用循环找到最大年龄以及最小年龄,同时计算出平均年龄。
static void Main(string[] args)
{
//定义一个年龄数组
int[] ages = { 18, 19, 20, 21, 18, 19, 25, 26, 31, 24 };
//定义一个变量记录 最大年龄
int maxAge = 0;
//定义一个变脸记录 最小年龄
int minAge = 0;
//定义一个变量存储所有的年龄,用来计算平均值
int totalAge = 0;
//循环比对年龄
for (int i = 0; i < ages.Length; i++)
{
if (i == 0)
{ //默认让第一个年龄作为最大年龄和最小年龄的比对值。
maxAge = ages[i];
minAge = ages[i];
}
else {
if (ages[i] > maxAge) //如果当前年龄大于之前记录的最大年龄,则将其赋值给最大年龄
{
maxAge = ages[i];
}
if (ages[i] < minAge)//如果当前年龄小于之前记录的最小年龄,则将其赋值给最小年龄
{
minAge = ages[i];
}
}
//记录年龄汇总
totalAge = totalAge + ages[i];
}
Console.WriteLine("最大年龄:" + maxAge);
Console.WriteLine("最小年龄:" + minAge);
Console.WriteLine("平均年龄:" + totalAge / ages.Length);
Console.ReadKey();
}
输出结果:
最大年龄:31
最小年龄:18
平均年龄:22
例题分析
我们来拆分一下例题,"使用数组定义一个年龄数组",这个很简单了,使用数组的语法,定义一个int类型的数组即可。"使用循环找到最大年龄和最小年龄",从字面意思就可以得出原理,我们用循环去遍历一个数组,挨个依次比对所有的年龄,只要当前处于循环的年龄比记录的年龄大或者小,分别存储为最大年龄和最小年龄即可。
示例代码中有一段将第一个年龄作为默认的最小值和最大值存储起来,就是为了方便比对的。
平均年龄,就是在循环时,将数组中的年龄挨个相加,最后除以数组的长度计算出平均数即可。
其实针对数组,还有可以讲的内容,但是为了防止萌新在短时间内摄入过多,我劝你善良消化一下。
感兴趣的男生可以用上面的例子计算一下英雄联盟里初始攻击最高的英雄和最低的英雄,以及平均初始攻击力。
女生可以统计一下购物车,看看收藏的最贵的商品和最便宜的商品,以及商品平均价格。