零基础学Java第2版
上QQ阅读APP看书,第一时间看更新

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

上面的程序段只是操作二维数组中的元素而已,所以只要牢牢地记住数组的基本概念,其他的问题就可以迎刃而解。