5.3 由实例引出不同数组种类及其使用

本节主要使用实例让读者能更加熟悉数组的使用。通过本节的学习,总结一些编程中所使用的编程思路。编程最重要的不是如何编写代码,使用哪种控制流程,最主要的是编程的思路,编程思路决定着这个程序代码的好与坏。

5.3.1 由实例引出一维数组及其使用

【实例5.2】先来看一个很简单的实例。有两个数组a[]、b[],输出它们中的各个数据,并且输出它们的长度。


01 ///初始化两个数组a、b

02 ///使用循环语句将两个数组内元素输出

03 ///并且使用length属性输出数组的长度

04 public class arrary2

05 {

06 public static void main(String[]args)

07 {

08 int[]a=new int[]{1,2,3,4,5};

09 int[]b=new int[]{2,3,4,5,6,7,8};

10 for(int i=0;i<a.length;i++)

11 {

12 System.out.println("a["+i+"]="+a[i]);

13 }

14 for(int j=0;j<b.length;j++)

15 {

16 System.out.println("b["+j+"]="+b[j]);

17 }

18 System.out.println("a数组的长度是:"+a.length);

19 System.out.println("b数组的长度是:"+b.length);

20 }

21 }


【代码说明】第8~9行初始化两个数组a和b。第10~13行for循环的次数取决于数组a的长度。第14~17行的循环次数同样取决于数组b的长度。

【运行效果】


a[0]=1

a[1]=2

a[2]=3

a[3]=4

a[4]=5

b[0]=2

b[1]=3

b[2]=4

b[3]=5

b[4]=6

b[5]=7

b[6]=8

a数组的长度是:5

b数组的长度是:7


这个程序段主要是将两个数组中的每个数据和整个数组的长度输出,而这个例子也是数组最简单的实例,下面再看一个稍微复杂的实例。

【实例5.3】有两个数组a[]、b[]。将两个数组中数据一一对应相乘,得出数组c,输出数组c的元素和3个数组的长度。


01 ///初始化两个数组a、b

02 ///将两个数组中对应的元素相乘得出第三个数组的元素

03 ///输出三个数组的长度

04 public class arrary3

05 {

06 public static void main(String[]args)

07 {

08 int[]a=new int[]{1,2,3,4,5};

09 int[]b=new int[]{2,3,4,5,6};

10 int[]c=new int[5];

11 for(int i=0;i<a.length;i++)

12 {

13 c[i]=a[i]*b[i];

14 }

15 for(int j=0;j<a.length;j++)

16 {

17 System.out.println("c["+j+"]="+(a[j]*b[j]));

18 }

19 System.out.println("a数组的长度是:"+a.length);

20 System.out.println("b数组的长度是:"+b.length);

21 System.out.println("c数组的长度是:"+c.length);

22 }

23 }


【代码说明】第10行首先声明一个没有初始数值的数组c,第11~14行通过循环为数组c赋值,然后第15~18行通过循环输出数组c中的元素,第19~21行输出3个数组的长度。

【运行效果】


c[0]=2

c[1]=6

c[2]=12

c[3]=20

c[4]=30

a数组的长度是:5

b数组的长度是:5

c数组的长度是:5


通过这段程序可以学习如何操作数组内各个元素,下面再看看更加复杂的程序段。

【实例5.4】创建一个整数型数组f,它拥有20个元素,并将它的各个元素赋值如下,然后输出它们。其函数关系如下所示:


f[0]=1;f[1]=2;f[i]=f[i-1]+f[i-2];


实例的详细代码如下所示。


01 ///条件中的是一个递归函数

02 ///通过一个循环语句将数组中所有的元素输出

03 public class arrary4

04 {

05 public static void main(String[]args)

06 {

07 int[]f=new int[20];

08 f[0]=0;

09 f[1]=2;

10 for(int i=2;i<f.length;i++)

11 {

12 f[i]=f[i-1]+f[i-2];

13 System.out.println("f["+i+"]="+f[i]);

14 }

15 }

16 }


【代码说明】这个程序段是数学中的一个递归函数,其中的运算过程交给了第10~14行的循环语句去处理。

【运行效果】


f[2]=2

f[3]=4

f[4]=6

f[5]=10

f[6]=16

f[7]=26

f[8]=42

f[9]=68

f[10]=110

f[11]=178

f[12]=288

f[13]=466

f[14]=754

f[15]=1220

f[16]=1974

f[17]=3194

f[18]=5168

f[19]=8362


上面所有的程序段,都是围绕着如何操作一维数组内的元素,其实一维数组在实际程序中的一些应用,不过是操作数组内部元素而已。