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

5.4 数组的综合实例

【实例5.6】设计一个程序,有两个整型数组:a[]和b[]。a数组中有5个元素,b数组中有5个元素。现在要求:

(1)分别输出两个数组中的各个元素及其长度。

(2)有一个数组c,它的元素就是a数组和b数组中一一对应的元素的乘积,并且输出其长度。

(3)有一个数组d,它的元素是前面三个数组中一一对应的元素满足的表达式:a[i]*c[i]-b[i]。

分析与编写:

要输出各个元素及长度。这个程序在前面也遇到过,具体程序段如下所示。

01   public class arrary6
02   {
03         public static void main(String[] args)
04         {
05              int[] a=new int[]{2,4,6,8,10};
06              for(int i=0;i<a.length;i++)
07              {
08                   System.out.println("a["+i+"]="+a[i]);
09              }
10              System.out.println("数组a的长度是:"+a.length);
11         }
12   }

【代码说明】第5行初始化数组,第6~9行通过循环输出数组中的元素。

【运行效果】

a[0]=2;
a[1]=4
a[2]=6
a[3]=8
a[4]=10;
数组a的长度是:5

输出另一个数组的程序代码如下。

01   public class arrary7
02   {
03         public static void main(String[] args)
04         {
05              int[] b=new int[]{1,3,5,7,9};
06              for(int i=0;i<b.length;i++)
07              {
08                   System.out.println("b["+i+"]="+b[i]);
09              }
10              System.out.println("数组b的长度是:"+b.length);
11         }
12   }

【代码说明】第5行初始化数组b,第6~9行输出数组中各个元素。

【运行效果】

b[0]=1
b[1]=3
b[2]=5
b[3]=7
b[4]=9
数组b的长度是:5

在第二个要求里,必须要创建一个新的数组c,接着就是操作前两个数组的元素。这个要求内的程序段在前面的小节内已经详细举过例子,下面看程序段。

01   public class arrary8
02   {
03         public static void main(String[] args)
04         {
05              int[] a=new int[]{2,4,6,8,10};
06              int[] b=new int[]{1,3,5,7,9};
07              int[] c=new int[5];
08              for(int i=0;i<a.length;i++)
09              {
10                   c[i]=a[i]*b[i];
11              }
12              for(int j=0;j<a.length;j++)
13              {
14                   System.out.println("c["+j+"]="+(a[j]*b[j]));
15              }
16              System.out.println("数组c的长度是:"+c.length);
17         }
18   }

【代码说明】

第5~7行创建了3个数组,其中数组a和b创建时有默认值,数组c没有默认值。

第8~11行设置数组c的值,然后第12~15行输出数组c。

【运行效果】

c[0]=2;
c[1]=12
c[2]=30
c[3]=56
c[4]=90;
数组c的长度是:5

这个程序是一个数组内部各个对应的元素的操作,这在前面已经举过例子,此处不再详细描述。

第三个要求比起前两个,稍微复杂了点,但是可以通过分析,来编写程序段。先看下面的程序,然后再来分析。

01   public class arrary9
02   {
03         public static void main(String[] args)
04         {
05              int[] a=new int[]{2,4,6,8,10};
06              int[] b=new int[]{1,3,5,7,9};
07              for(int i=0;i<b.length;i++)
08              {
09                   System.out.println("d["+i+"]="+(a[i]*a[i]*b[i]-b[i]));
10              }
11         }
12   }

【代码说明】读者在代码中没有看到数组c,因为本身数组c就是数组a和数组b中元素相乘的结果,所以第9行代码中用a[i]*b[i]代替数组c。

【运行效果】

d[0]=3
d[1]=45
d[2]=175
d[3]=441
d[4]=891

整个程序段其实与上一个程序段相似,只不过表达式比上一例稍微复杂。

上面三个程序段其实可以用一个程序段来表示,这就涉及面向对象编程的理念。代码如下所示。

01   public class arrary10
02   {
03         int[] a=new int[]{2,4,6,8,10};
04         int[] b=new int[]{1,3,5,7,9};
05         public static void main(String[] args)
06         {
07              arrary10 w=new arrary10();
08              w.print1();
09              w.print2();
10              w.print3();
11              w.print4();
12         }
13         void print1()
14         {
15              for(int i=0;i<b.length;i++)
16              {
17                   System.out.println("b["+i+"]="+b[i]);
18              }
19              System.out.println("数组b的长度是:"+b.length);
20         }
21         void print2()
22         {
23               for(int i=0;i<a.length;i++)
24               {
25                   System.out.println("a["+i+"]="+a[i]);
26         }
27              System.out.println("数组a的长度是:"+a.length);
28         }
29         void print3()
30         {
31              for(int i=0;i<b.length;i++)
32              {
33                     System.out.println("c["+i+"]="+(b[i]*a[i]));
34              }
35              System.out.println("数组c的长度是:"+b.length);//因为数组c和b相同,可以用b.length
36         }
37         void print4()
38         {
39              for(int i=0;i<b.length;i++)
40              {
41                   System.out.println("d["+i+"]="+(a[i]*a[i]*b[i]-b[i]));
42              }
43         }
44   }

【代码说明】第35行在获取数组c的长度时,使用了b.length,因为数组c和数组b其实一样长,这里简化了代码,直接输出数组b的长度,同样也是数组c的长度。

【运行效果】

b[0]=1
b[1]=3
b[2]=5
b[3]=7
b[4]=9
数组b的长度是:5
a[0]=2
a[1]=4
a[2]=6
a[3]=8
a[4]=10
数组a的长度是:5
c[0]=2
c[1]=12
c[2]=30
c[3]=56
c[4]=90
数组c的长度是:5
d[0]=3
d[1]=45
d[2]=175
d[3]=441
d[4]=891

每个功能使用一个方法来实现,在主运行函数内,利用创建新对象,再使用对象的方法来引用功能函数。这样,整个程序看起来就很清晰明了,并且功能模块很独立。不会因为修改一处而导致全部代码修改,这也正是面向对象程序开发的一个最大优势。

在编写有关数组方面的程序时,主要是操作数组中的元素。而在实际的程序开发中,不可能像前面举的例子一样简单。在实际开发工作中,要涉及的不单纯是基本类型的数组,绝大多数会遇到数组中元素的数据类型是对象类型。至于对象类型的使用,其实同基本类型的数组一样,只不过是数据类型不同而已,对象数组将会在后面的章节中讲解。