数据存储。
假设您开发了一款名为“User Hostile”的电脑游戏,玩家在其中与复杂且不友好的玩家竞争计算机界面。现在您需要编写一个程序来跟踪该游戏在五年内的月销售额。或者假设您需要清点 Hacker Hero Trading Cards。
很快您就会得出结论,您需要的不仅仅是简单的基本数据类型来存储和处理信息。
数组。简介。
为了更容易处理大量数据,一组单元格被赋予了一个共同的姓名。这样的一组单元格称为数组。
Array –它是一组相同类型的存储单元,并排放置并具有共同的名称。组中的每个单元格都有一个唯一的编号。
使用数组时需要学习三件事:
X为数组分配所需大小的内存;
X将数据写入所需的单元格;
X从单元格中读取数据。
创建一个数组。你>
创建数组时,会在内存中分配空间(一定数量的单元格)。跨度>跨度>
<前>
1) 可以通过简单地枚举元素来创建数组:
<前>
int [] nums = < code>new int [] { 1, 2, 3, 5 };
int 表示数组中的所有对象都是整数。 代替 int 可以有任何其他数据类型。例如,
string[] names = ["Vasya", "Peter", "Fedya"];
2) 我们不能立即指定数组的值,而是简单地创建一个我们需要的长度的数组。
int [] nums = new int [4];
3) 数组总是“知道”你的尺码。可以这样找到数组a的大小:
a.长度;
通常数组的大小存储在一个单独的变量中,以便可以轻松更改程序以使用不同的数组大小。示例:
<前>
int N = 10; // 将数组的大小存储在变量 N 中
int[] nums = new int[4]; //创建一个大小为N的数组
Console.Write(nums.Length); // 显示数组的大小
数组的大小可以通过键盘设置。
|
引用数组元素。
数组的大部分用途来自于它的元素可以单独访问的事实。
这样做的方法是使用索引对元素进行编号。
Index 是指向特定数组元素的值。
记住: C# 数组编号从零开始。< br />
访问数组 A 的示例:
<前>
int x = (A[3] + 5) * A[1] / /读取值A[3]和A[1]
A[0] = x + 6 // 将新值写入 A[0]
让我们分析一下处理数组元素的程序。
<前>
int i = 1;
int[] A = 新的 int[5]; //创建一个包含5个元素的数组
A[0] = 23; // 数组的 5 个元素中的每一个(索引从 0 到 4)
A[1] = 12; // 写一个特定的值
A[2] = 7;
A[3] = 43;
A[4] = 51;
A[2] = A[i] + 2*A[i-1] + A[2*i]; // 将索引为 2 的元素的值更改为表达式的结果
// 因为 i=1,所以将变量 i 的值代入我们得到的表达式
// 下一个表达式 A[2] = A[1] + 2*A[0] + A[2];
Console.Write((A[2] + A[4]));
作为执行该程序的结果,数组的元素与索引 2 和索引 4 将出现在屏幕上,等于 116。 从示例中可以看出,我们可以访问数组的任何元素。并使用各种公式计算所需的元素数(例如,在程序 A[i-1] 或 A[2*i] 中,在这些情况下,元素索引将被计算并取决于 i 的值)。
让我们分析一个示例程序。
<前>
int N = 5;
int[] A = 新的 int[N];
整数 x = 1;
A[x + 4] = A[x] + A[2 * (x + 1)]; // 将 x 代入表达式和计算之后
// 获取下一行 A[5] = A[1] + A[4]
// A[5] 不存在这样的元素
// 错误 - 数组越界
数组声明有5个元素,这意味着元素将从0到4. 我们看到,第 6 行的程序引用了一个不存在的元素:A[5] 。
原来是程序越界了。
数组溢出是指访问数组中不存在的索引处的元素。
在这种情况下,程序通常会因运行时错误而崩溃。
|
使用数组时,您通常必须同时处理数组的所有元素。
迭代元素:我们查看数组的所有元素,并在必要时对每个元素执行一些操作。
为此,最常使用带有变量的循环,它从 0 变为 N-1,其中 N 是数字数组元素。
在 N 下,我们将考虑数组的当前大小,即,
N = A.Length;
<前>
...
for (int i = 0; i < N; i++)
{
// 这里我们使用 A[i]
}
在指定的循环中, i 变量将取值0, 1, 2, ..., N-1。 因此,在循环的每一步,我们都访问数组中编号为 i 的特定元素。
也就是说,描述 A[i] 数组中的一个元素需要做什么,并将这些动作放在这样的循环中就足够了。
让我们编写一个程序,用第一个N 自然数填充数组,也就是说,在程序结束时,数组的元素应该变得相等
<前>
A[0] = 1
A[1] = 2
A[2] = 3
...
A[N - 1] = N
很容易看出这个规律:数组元素的值必须比元素的索引。
循环看起来像这样
<前>
for (int i = 0; i < N; i++) { A[ i] = i + 1; }
|
处理数组元素的其他方法
除了<代码循环> ,也可以使用foreach - 它遍历数组的所有元素,而不使用索引。有时它会很方便,例如,在屏幕上显示一个数组。
foreach(A 中的整数 i)
{
Console.Write(i + "");
这就是您如何从键盘读取一个数组,数组的元素写在一行上并用空格分隔。
使用 System.Linq; // 您需要编写此指令才能使用与处理数组相关的函数
...
字符串文本 = Console.ReadLine();
int[] array = text.Split(' ').Select(int.Parse).ToArray();
// Split() 将字符串拆分为单独的对象(在本例中为空间划分)
// Select(int.Parse) 将每个对象(字符串)转换为一个 int
// ToArray() 将所有接收到的对象写入数组
|