Java核心技术卷I基础知识3.10.6 多维数组

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

 

时间: 2024-09-22 23:31:24

Java核心技术卷I基础知识3.10.6 多维数组的相关文章

Java核心技术卷I基础知识3.10 数组

3.10 数组 数组是一种数据结构,用来存储同一类型值的集合.通过一个整型下标可以访问数组中的每一个值.例如,如果a是一个整型数组,a[i]就是数组中下标为i的整数. 在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字.下面声明了整型数组a:   不过,这条语句只声明了变量a,并没有将a初始化为一个真正的数组.应该使用new运算符创建数组.   这条语句创建了一个可以存储100个整数的数组.数组长度不要求是常量:new int[n]会创建一个长度为n的数组.      

Java核心技术卷I基础知识3.10.1 for each循环

3.10.1 for each循环 Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心. 这种增强的for循环的语句格式为:   定义一个变量用于暂存集合中的每一个元素,并执行相应的语句(当然,也可以是语句块).collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList).有关数组列表的内容将在第5章中讨论,有关Iterable接口的内容将在第9章中讨论. 例如,   打印

Java核心技术卷I基础知识3.10.4 命令行参数

3.10.4 命令行参数 前面已经看到多个使用Java数组的示例.每一个Java应用程序都有一个带String arg[]参数的main方法.这个参数表明main方法将接收一个字符串数组,也就是命令行参数. 例如,看一看下面这个程序:   如果使用下面这种形式运行这个程序:   args数组将包含下列内容:   这个程序将显示下列信息:         C++注释:在Java应用程序的main方法中,程序名并没有存储在args数组中.例如,当使用下列命令运行程序时   args[0]是"-h&q

Java核心技术卷I基础知识3.10.3 数组拷贝

3.10.3 数组拷贝 在Java中,允许将一个数组变量拷贝给另一个数组变量.这时,两个变量将引用同一个数组:   图3-14显示了拷贝的结果.如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:   第2个参数是新数组的长度.这个方法通常用来增加数组的大小:   如果数组元素是数值型,那么多余的元素将被赋值为0:如果数组元素是布尔型,则将赋值为false.相反,如果长度小于原始数组的长度,则只拷贝最前面的数据元素.       C++注释:Java数组与

Java核心技术卷I基础知识3.10.5 数组排序

3.10.5 数组排序 要想对数值型数组进行排序,可以使用Arrays类中的sort方法:   这个方法使用了优化的快速排序算法.快速排序算法对于大多数数据集合来说都是效率比较高的.Arrays类还提供了几个使用很便捷的方法,在稍后的API注释中将介绍它们. 程序清单3-7中的程序用到了数组,它产生一个抽彩游戏中的随机数值组合.假如抽彩是从49个数值中抽取6个,那么程序可能的输出结果为:     要想选择这样一个随机的数值集合,就要首先将数值1,2,-,n存入数组numbers中:   而用第二

Java核心技术卷I基础知识1.2.10 多线程

1.2.10 多线程 多线程可以带来更好的交互响应和实时行为. 如今,我们非常关注并发性,因为摩尔定律行将完结.我们不再追求更快的处理器,而是着眼于获得更多的 处理器,而且要让它们一直保持工作.不过,可以看到,大多数编程语言对于这个问题并没有显示出足够的 重视. Java在当时很超前.它是第一个支持并发程序设计的主流语言.从白皮书中可以看到,它的出发点稍有些不 同.当时,多核处理器还很神秘,而Web编程才刚刚起步,处理器要花很长时间等待服务器响应,需要并发 程序设计来确保用户界面不会"冻住&qu

Java核心技术卷I基础知识1.5 关于Java的常见误解

1.5 关于Java的常见误解 在结束本章之前,我们列出了一些关于Java的常见误解,同时给出了解释. 1.?Java是HTML的扩展 Java是一种程序设计语言:HTML是一种描述网页结构的方式.除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处. 2.?使用XML,所以不需要Java Java是一种程序设计语言:XML是一种描述数据的方式.可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持.此外,许多重要的第三方XML工

Java核心技术卷I基础知识3.7.3 文件输入与输出

3.7.3 文件输入与输出 要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:   如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: "c:\\mydirectory\\myf?ile.txt".       注释:在这里指定了UTF-8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用).读取一个文本文件时,要知道它的字符编码--更多信息参见卷Ⅱ第2章.如果省略字符编码,则会使用运行这个Java程序的机器的"默

Java核心技术卷I基础知识3.6.6 码点与代码单元

3.6.6 码点与代码单元 Java字符串由char值序列组成.从3.3.3节"char类型"已经看到,char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量.例如:   要想得到实际的长度,即码点数量,可以调用:   调用s.charAt(n)将返回位置n的代码单元,n介于0-s.length(