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
上面所有的程序段,都是围绕着如何操作一维数组内的元素,其实一维数组在实际程序中的一些应用,不过是操作数组内部元素而已。
5.3.2 由实例引出二维数组及其使用
【实例5.5】针对二维数组,先看看下面的有关二维数组的例子:创建一个字符型二维数组,并根据执行结果为各元素赋值,然后输出各元素。
01 ///使用两个数组分别代表空间中的x和y轴 02 ///通过循环语句将对应的每一个坐标上的元素输出 03 public class arrary5 04 { 05 public static void main(String[] args) 06 { 07 char[][] a; 08 a=new char[4][10]; 09 a[0]=new char[10]; 10 a[1]=new char[10]; 11 a[2]=new char[10]; 12 a[3]=new char[10]; 13 a[0][0]=65; 14 a[1][0]=67; 15 a[2][0]=69; 16 a[3][0]=71; 17 for(int i=0;i<a.length;i++) 18 { 19 for(int j=1;j<a[i].length;j++) 20 { 21 a[i][j]=(char)(a[i][j-1]+1); 22 System.out.print(a[i][j-1]); 23 } 24 System.out.println(); 25 } 26 } 27 }
【代码说明】第13~16行首先为二维中第一列的数据赋值,这样就可以通过第19~23行的循环,通过一次加1的方式,输出9个字母。第24行的代码非常关键,起到输出结果换行的作用。
注意
读者从程序中可以看出二维数据其实每行有10个数据,但我们只输出了9个,读者可通过更改第19~23行的代码来实现10个数据的输出。
【运行效果】
ABCDEFGHI CDEFGHIJK EFGHIJKLM GHIJKLMNO
上面的程序段只是操作二维数组中的元素而已,所以只要牢牢地记住数组的基本概念,其他的问题就可以迎刃而解。