目录
起初我们定义多个变量需要一个一个的定义,如下:
string name = "张三";
string name1 = "李四";
string name2 = "王五";
数组(Array)的定义
可以将多个同类的定义在一起,如何使用数组呢,见下文 ↓
1.如何去创建(声明)数组?
类型 [ ] 变量名 {数组中的数据} 数据与数据之间要用 “,” 号隔开
// 这里创建了一个字符串类型的数组
string[ ] names = { "张三", "李四", "王五", "赵六","张二"};
2.如何修改数组中的数据?
通过 数组名[索引] = "要修改的值" 进行修改;
names[0] = "小张";
3.如何访问数组中的某个数据?
通过 数组名[索引]
Console.WriteLine(names[0]);
4.如果我想要查看数组中所有的数据如何操作?
遍历 循环 for foreach
如何去控制循环的次数 也就是 如何知道数组中元素的长度
Length 属性: 获取数组中元素的个数 数组的长度
//注意: 索引是从零0开始的,长度是从1开始的
Console.WriteLine(names.Length);
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}
5.使用 foreach关键字
foreach 关键字 (var 类型 item 遍历出来的每一项 in 在 name 要遍历的元素)
foreach (string item in names)
{
Console.WriteLine(item);
}
数组创建的几种方式
方式一 直接书写创建
int[] arr1; // 只是声明了一个数组 并没有数据 也不知道数据长度 注意:这种创建方式创建数组的时候声明与赋值 必须在同一行完成
arr1[0] = 2;
int[] arr = { 1, 2, 3, 4 }; //长度及数据已经固定了 不能再添加值
//arr[4] = 20; //报错 添加不进去
Console.WriteLine(arr[4]);
方式二 通过new 关键字创建 [3]代表数组的长度 可以存放几个数据 创建了一个可以存放3个数据的数组 当没有设置值的时候 默认值为0
int[] arr2 = new int[3];
//设置数组中的数据
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;
Show(arr2);
方式三 通过new 关键字创建 后面跟上{} 添加数据 明确了数组中的数据 不指定长度
int[] arr3 = new int[] { 1, 2, 3, 4, 5, 6 }; //根据元素数量,自动匹配长度
方法四 通过new 关键字创建 [5] 指定数组长度 {} 数组中的数据 数据的个数要与长度一致 多了不行少也不行
int[] arr4 = new int[6] { 1, 2, 3, 2, 4, 5 };
//总结:不能访问索引不存在数据 ,索引是从0开始的 数组的长度是从1开始的 创建数组的时候要么有长度 要么有数据
数组常用的方法
// Reveres 将数组中的数据颠倒顺序 反转
Array.Reverse(arr4);
Show(arr4);
// Clear 清除
Array.Clear(arr4);
Show(arr4);
// Indexof 查找数组中是否包含某个数据 如果有返回索引 没有返回-1 检测的时第一次出现的
Console.WriteLine(Array.IndexOf(arr4,2));
// LastIndexOf 查找数组中是否包含某个数据 如果有返回索引 没有返回-1 检测的时最后一次出现的
Console.WriteLine(Array.LastIndexOf(arr4,2));
// Sort 排序 将数组中的数据进行从小到大排序
Array.Sort(arr4);
//Array.Reverse(arr4);
Show(arr4);
//定义一个函数输出数组内容 创建方法时 参数可以是任意类型
static void Show(int[] arr)
{
foreach (var item in arr)
{
Console.WriteLine(item);
}
}
数组常用的方法函数内部结构代码
#region 查找元素第一次出现的位置
//打三条斜杠
/// <summary>
/// 查找数组是否包含某个数据 第一次出现的位置
/// </summary>
/// <param name="arr"></param>
/// <param name="value"></param>
/// <returns></returns>
//Idexof 查找数据第一次出现的位置
//打三条斜杠
static int Idexof(int[] arr ,int value)
{
//如何拿到数组中的每个元素,与要查的值进行比较
//不能用foresch,没法返回位置
int n = 1;
for (int i = 0; i < arr.Length; i++)
{
//判断是否有一样的数据存在
if (arr[i] == value)
{
//return i;用这个会结束程序
n = i;
break;
}
}
return n;
}
#endregion
#region 查找元素最后一次出现的位置
/// <summary>
/// 查找数组是否包含某个数据 最后一次出现的位置
/// </summary>
/// <param name="arr"></param>
/// <param name="value"></param>
/// <returns></returns>
static int lastIdexof(int[] arr, int value)
{
//如何拿到数组中的每个元素,与要查的值进行比较
//不能用foresch,没法返回位置i
int n = 1;
for (int i = arr.Length-1; i >=0; i--)
{
//判断是否有一样的数据存在
if (arr[i] == value)
{
//return i;用这个会结束程序
n = i;
break;
}
}
return n;
}
#endregion
#region 反转数组
/// <summary>
/// 反转数组
/// </summary>
/// <param name="arr"></param>
/// <param name="value"></param>
/// <returns></returns>
static int[] Reveres(int[] arr)
{
int[] arr1=new int[arr.Length];
for (int num=0,i = arr.Length - 1; i >= 0;num++, i--)
{
arr1[num]= arr[i];
}
return arr1;
}
#endregion
#region 排序
/// <summary>
/// 用冒泡法排序
/// </summary>
/// <param name="arr"></param>
/// <param name="value"></param>
/// <returns></returns>
static void Sort(int[] arr)
{
bool isChange = false;//标记排序完成
int num = 0; //记录交换次数
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
isChange = true;
num++;
}
}
if (isChange == false)
{ break; }
}
}
#endregion
随机数生成
//当我们想要使用一个不是静态类或抽象类的类时 要先进行实例化
//对象实例化
Random rd = new Random();
int num = rd.Next(); //随机随机一个数字 伪随机
//0-99 返回一个小于指定值(100) 非负的随机数
int num1 = rd.Next(100);
//10-100 返回一个指定区间内的随机数 不包含指定的最大值
int num2 = rd.Next(90,101);
Console.WriteLine(num2);