3.10.6 多维数组
多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。这一节的内容可以先跳过,等到需要使用这种存储机制时再返回来学习。
假设需要建立一个数值表,用来显示在不同利率下投资$10,000会增长多少,利息每年兑现,而且又被用于投资(见表3-8)。
表3-8 不同利率下的投资增长情况
10% 11% 12% 13% 14% 15%
10 000.00 10 000.00 10
000.00 10 000.00 10 000.00 10 000.00
11 000.00 11 100.00 11
200.00 11 300.00 11 400.00 11 500.00
12 100.00 12 321.00 12
544.00 12 769.00 12 996.00 13 225.00
13 310.00 13 676.31 14
049.28 14 428.97 14 815.44 15 208.75
14 641 00 15 180.70 15
735.19 16 304.74 16 889.60 17 490.06
16 105.10 16 850.58 17
623.42 18 424 .35 19 254.15 20
113.57
17 715.61 18 704.15 19
738.23 20 819.52 21 949.73 23 130.61
19 487.17 20 761.60 22
106.81 23 526.05 25 022.69 26 600.20
21 435.89 23 045.38 24
759.63 26 584.44 28 525.86 30 590.23
23 579.48 25 580.37 27
730.79 30 040.42 32 519.49 35 178.76
可以使用一个二维数组(也称为矩阵)存储这些信息。这个数组被命名为balances。
在Java中,声明一个二维数组相当简单。例如:
与一维数组一样,在调用new对多维数组进行初始化之前不能使用它。在这里可以这样初始化:
另外,如果知道数组元素,就可以不调用new,而直接使用简化的书写形式对多维数组进行初始化。例如:
一旦数组被初始化,就可以利用两个方括号访问每个元素,例如,balances[i][j]。
在示例程序中用到了一个存储利率的一维数组interest与一个存储余额的二维数组balances。一维用于表示年,另一维用于表示利率,最初使用初始余额来初始化这个数组的第一行:
然后,按照下列方式计算其他行:
程序清单3-8给出了完整的程序。
注释:for each循环语句不能自动处理二维数组的每一个元素。它是按照行,也就是一维数组处理的。要想访问二维数组a的所有元素,需要使用两个嵌套的循环,如下所示:
提示:要想快速地打印一个二维数组的数据元素列表,可以调用:
输出格式为:
程序清单3-8 CompoundInterest/CompoundInterest.java