数组的基础知识

数组是一种可以存储数据项列表的线性结构。数组中存储的每个项必须具有相同的类型——这被称为数组的类型。

有两种方法可以创建数组。第一个方法使用所谓的初始化器语法来创建数组并提供要存储在数组中的值列表。

int[] A = {2,5,1,4};//创建一个int类型的数组,大小为4,包含数字2、5、1和4。

这种方法适用于只有一定数量的项要存储,并且事先知道这些值是什么的情况。这种条件的结合实际上在实践中很少发生。

更常见的构造数组的方法是使用以下语法:

int[] B = new int[10000];//创建一个存储10000个整数的数组

为了将数据放入数组中,我们通过数组索引表示法访问数组中的各个条目。数组中的每个位置都有一个关联的索引。索引值是连续的,以0作为第一项的索引。

你可以使用索引符号来访问数组中的位置进行读写:

B[0] = 12;//把12放到数组B的第一个位置B[1] = 23;//将23放入第二个位置int x = A[1];//将值从A中的第二个位置复制到x

数组和循环

由于数组为我们提供了存储大量信息的能力,因此我们经常需要自动化处理数组值的过程。循环是提供这种自动化的自然机制。

下面是一个for循环的例子,用于用10000个随机双精度对象填充数组。

随机rnd = new Random();double randomNumbers[] = new double[10000];for(int n = 0;n < 10000;n++) randomNumbers[n] = rnd.nextDouble();

下面是另一个迭代随机数列表的示例,以计算小于0.5的随机数有多少:

Int count = 0;if(randomNumbers[n] < 0.5) count++;

赢博体育数组都有一个length属性,可以用来控制遍历数组的循环。下面是前面使用length属性控制循环的例子。

Int count = 0;if(randomNumbers[n] < 0.5) count++;

数组和文件

我们已经看到,文件是存储用于循环的大量数据的好方法。既然我们也可以使用数组来存储大量数据,然后对其进行操作,那么最自然的方法就是首先将数据从文件读入数组,然后从该点开始使用该数组。

下面是一些从名为“numbers.txt”的文件中读取100个整数并将它们放入数组的代码。

扫描器输入= null;try {input = new Scanner(new File("numbers.txt"));} catch(Exception ex) {ex. printstacktrace ();system . exit (0);} int A[] = new int[100];for(int n = 0;n < 100;n++) A[n] = input.nextInt();input.close ();

这段代码假设文件至少有100个整数可供我们读取。在某些情况下,我们可能事先不知道数据文件中有多少个数字。在这种情况下,唯一合理的方法是读取文件的内容两次—一次简单地计算有多少个数字,第二次实际将数字读入数组。

扫描器输入= null;try {input = new Scanner(new File("numbers.txt"));} catch(Exception ex) {ex. printstacktrace ();system . exit (0);} int N = 0;//计算文件中有多少个数字。while(input.hasNextInt()) {int未使用= input.nextInt();N + +;} input.close ();int[] = new int[N];//创建一个合适大小的数组try {input = new Scanner(new File("numbers.txt"));} catch(Exception ex) {ex. printstacktrace ();system . exit (0);} for(int n = 0;n < A.length;n++) A[n] = input.nextInt();input.close ();