基于新业务流程的餐饮消费系统外文翻译资料

 2021-12-30 10:12

英语原文共 719 页,剩余内容已隐藏,支付完成后下载完整资料


目录

6.1引言 1

6.2创建数组 1

6.3访问数组元素 4

6.4将数组作为参数传递 7

6.5 Varargs 8

6.1引言

在前面的章节中,我们向你展示了如何创建变量并存储数据。在每种情况下,创建的变量都可以用来保存单个数据项。但是,你会如何处理一个你必须创造和处理大量数据项?

一个显而易见的方法就是声明尽可能多的变量。声明大量变量是一件麻烦的事情,但足够简单。例如,让我们考虑一个记录7个温度读数的非常简单的应用程序(每周七天,每天一次):

这里我们已经声明了七个变量,每一个都是双类型的(因为温度将被记录为实数)。到现在为止,一直都还不错。现在编写一些代码,允许用户输入这些温度的值。获取一个温度很容易(假设我们已经创建了一个Scanner对象,键盘),如下所示:

但是你怎么写代码来得到第二个温度,第三个温度和所有剩余温度?好吧,你可以为输入的每一个温度重复上面的两行,但你有这些时间可以省下来做更好的事情!

基本上,你要重复这两行代码七次。你已经知道for循环在以固定的次数重复代码行时很有用。也许你可以试试这里的for循环?

这看起来是一个很好的解决方案,但问题是,我们无法在for循环中编写明显的指令,该指令允许每次循环重复时将值输入到不同的变量中。就目前情况而言,没有办法, 因为每个变量都有一个不同的名称。

理想情况下,我们希望每个变量都有相同的名称(比如温度),这样我们就可以在这里使用一个循环,但是我们希望有某种方式能够区分每个连续变量。事实上,这正是数组允许我们这样做。

6.2创建数组

数组是Java中的一种特殊数据类型,可以被认为是存储项目集合的容器。这些项有时被称为数组的元素。存储在特定数组中的所有元素必须属于同一类型,但对这是哪种类型没有限制。因此,例如,一个数组可以用来保存int值集合或char值集合,但不能用于 存储int和char类型的混合值。

让我们看看如何在程序中使用数组。首先你需要知道如何创建数组。数组创建是一个两阶段的过程:

1.声明数组变量;

2.分配内存以存储数组元素。

数组变量的声明方式与简单变量的声明方式大致相同,只是在类型后面添加一对方括号。例如,如果一个数组用于保存一个整数变量集合,它可以声明如下:

这里为数组命名的方式与命名任何变量的方式相同。我们选择的名称是someArray。如果上面的声明中缺少方括号,这将只是一个简单的变量,它只能保存一个整数值。但是方括号表示这个变量是一个数组,允许存储许多整数值。

所以,要声明一个包含double类型值的temperature数组,可以按照以下内容来写:

目前,这只是将temperature定义为一个变量,可以链接到double类型数值集合。temperature变量本身被称为保存对数组元素的引用。引用是一个变量,它保存在计算机内存(称为内存地址)中存储数据的位置,而不是数据本身。如图6.1所示。

图6.1 声明一个数组引用过对计算机内存的影响

这是存储在temperature引用中的内存地址暂时没有意义,因为最终将保存数组元素的内存尚未分配。这是第二阶段。

你认为需要什么信息才能储备足够的计算机内存中所有数组元素的空间?

嗯,有必要说明数组的大小,即数组所需的元素数的最大值。此外,由于每个数据类型都需要不同的内存空间量,还需要声明每个单独数组元素的类型(这将是在数组声明的第一阶段中使用的相同类型)。然后将数组类型和大小与一个特殊的new运算符放在一起。例如,如果我们需要一个由10个整数组成的数组,下面的操作将是合适的。new运算符为给定大小和元素类型的数组在内存中创建空间。

当我们在下一章中查看类和对象时,我们将回来看看这个new运算符。一旦设置了数组的大小,就不能更改它,所以一定要创建一个足够大的数组来满足你的需要。返回上面的温度示例,如果你希望数组存储七个温度,你可以按如下方式分配内存:

让我们通过图6.2看看new运算符对计算机内存有什么影响。

如图6.2所示,数组创建已经在内存中创建了7个连续的位置。每个位置都足够大,可以存储double类型的值。temperature变量通过存储第一个元素的地址与这七个变量联系在一起。实际上,数组引用temperature链接到七个新的变量。这些变量每一个都会自动放置一些初始值。如果变量是某种数字类型(如int或double),每个变量的值将最初设置为零;如果变量类型为char它们的值最初将设置为表示空字符;如果变量是布尔类型,则每个变量都将在最初设置为false。

图6.2 声明七个“double”值数组对计算机内存的影响

数组创建的两个阶段(为元素声明和分配内存空间)也可以组合为一个步骤,如下所示:

你可能会想:每个变量都有什么名字?答案是数组中的每个元素与数组共享相同的名称,因此这种情况下,每个元素都被称为temperature。各个元素是由附加索引值唯一标识。索引值的作用相当于识别同一街道上房屋的街道编号(见图6.3)。与街道上的房屋通过街道名称和房屋编号进行标识的方式大致相同,数组元素通过数组名称和索引值进行标识。

像街道编号一样,这些索引值总是连续的整数。要格外注意这一点,在Java中,数组索引从0开始,而不是从1开始。此索引值是总是用方括号括起来,所以列表中的第一个温度被标识为temperature[0],第二温度按temperature [1],以此类推。

这意味着数组的大小和最后一个索引值的值不相同。在这种情况下,数组大小为7,最后一个索引为6。例如,没有像temperature[7]这样的值。记住这一点,因为它是程序错误的常见原因。如果你试图访问无效的元素(如temperature [7]),系统将生成以下程序错误:

java.lang.ArrayIndexOutOfBoundsException

图6.3 数组中的元素的标识方式与街道上的房屋大致相同

这种类型的错误称为异常。你会在第二章节了解更多关于异常的信息,但是你应该知道,通常情况下,异常会导致程序终止。

通常,在创建数组时,程序运行时会将值添加到数组中。但是,如果事先知道数组元素的所有值,那么通过初始化数组,可以在不使用new运算符的情况下创建数组。如下所示:

初始值放在大括号中,用逗号分隔。编译程序按初始值的数目确定数组的长度(在本例中为7)。每个值按顺序放入数组中,因此temperature[0]设置为9,temperature [1]设置为11.5,以此类推。这是唯一一个可以通过在单个赋值语句中列出元素来显式分配数组中所有元素的实例。

创建数组后,必须单独访问元素。

6.3访问数组元素

一旦创建了一个数组,它的元素就可以与Java中给定类型的任何其他变量一样使用。如果回顾温度示例,如果你回顾温度示例,会发现在创建数组时初始化每个温度的值实际上是不现实的。当程序运行时,更有可能将温度输入程序。让我们看看如何实现这一点。

无论数组是否初始化,都可以将值放入数组元素。我们知道这个数组中的每个元素都是double类型的变量。与基元类型的任何变量一样,赋值运算符可用于输入值。

在数组元素中使用赋值运算符时,唯一一件你必须记住的事就是指定要将值放入哪个元素中。例如,为了允许程序用户输入第一个温度的值,可以使用以下赋值(同样,假设存在Scanner对象、键盘):

再次注意,由于数组指数从0开始,第一个温度的索引不是1,而是索引0。

数组元素也可以打印在屏幕上。例如,以下命令打印出第六个数组元素的值:

注意,数组索引(如5)只是用来定位数组中的位置;它不是那个位置的项目。 例如,假设用户输入在数组中的第一个温度值为25.5;以下语句:

接着会打印出消息:

temperature for day 1 is 25.5

像上面的println命令这样的语句一开始可能有点混乱。消息指的是“第1天的温度”,但显示的温度是temperature[0]。记住,虽然索引位置0是,但温度是第一个温度!一段时间后,你将习惯于这个索引系统。

从上面的示例中可以看到,使用数组元素的方式与使用给定类型的任何其他类型的变量的方式完全相同。下面还有几个例子:

这个赋值使第五个温度的值加倍。以下if声明检查第三天的温度是否为高温:

到目前为止还不错,但是,如果你只想以使用正则变量的方式使用数组元素,那么为什么还要考虑数组呢?

原因是数组的索引系统实际上是非常强大的编程工具。索引值不需要是字面数,如5或2,正如我们刚刚展示的示例中所示;它可以是任何计算为整数的表达式。

通常使用整数变量代替固定的索引值,访问数组元素。例如,如果我们假设i是一个整数变量,则以下是访问数组元素的完全合法的方法:

这里的数组索引不是字面数字(如2或5),而是变量i。i的值将确定数组索引。如果i的值为4,则将显示temperature[4],如果i值为6,则显示temperature [6]等等。这种方法的一个有用的应用是将数组指令放在循环中(通常是for循环),循环计数器用作数组索引。例如,回到输入所有七个温度读数的原始问题,现在可以使用以下回路:

请仔细注意此循环中的以下几点:

bull;与之前许多从1开始的for循环计数器不同,此计数器从0开始。由于计数器用于跟踪数组索引,因此0是合适的起始数字。

bull;计数器上升到但不包括数组中的项数。在这种情况下,这意味着计数器上升到6而不是7。同样,这是因为大小为7的数组的数组索引在6处停止。

bull;println命令使用循环计数器显示输入的日期。然而,循环计数器从0开始。我们不会把一周的第一天想象成第0天!因此,为了让消息对用户更有意义,我们显示(i 1)而不是i。

实际上,此循环执行以下语句:

现在应该可以看到数组的好处了。如果我们使用返回数组长度的所有数组的内置功能,就可以使这个循环更具可读性。它是通过在数组名称后使用单词length来访问的。两者以一个句号连在一起。下面是一个例子:

屏幕上显示以下内容:温度数=7

注意,length功能返回数组的大小,不一定是当前存储在数组中的项目数(可能更少)。此属性可用于替换for循环中的固定数字,如下所示:

要了解这项技术的应用,请查看下面的程序,查看已完成的TemperatureReadings程序,该程序可存储和显示一周内的最高每日温度。

注意如何使用长度来控制两个for循环。这是一个样例运行。

enter max temperature for day 1 12.2
enter max temperature for day 2 10.5
enter max temperature for day 3 13
enter max temperature for day 4 15
enter max temperature for day 5 13
enter max temperature for day 6 12.5
enter max temperature for day 7 12
***TEMPERATURES ENTERED***
day 1 12.2
day 2 10.5
day 3 13.0
day 4 15.0
day 5 13.0
day 6 12.5
day 7 12.0

6.4将数组作为参数传递

在第5章中,我们研究了如何使用方法将编程任务分解为可管理的块。方法可以以参数的形式接收数据,并可以返回值的形式发送数据。数组既可以用作方法的参数,也可以用作返回值。在下一节中,我们将看到一个作为方法返回值的数组示例。在本节中,我们将研究将数组作为参数传递给方法。作为将数组传递给方法的示例,请再次考虑上一节中的temeraterreadings程序。该程序包含main方法中的所有处理。因此,此方法的代码有点难以读取。让我们做点什么。我们将创建两种方法,分别输入温度和显示温度。要使这些方法能够访问数组,它们必须将其作为参数接收。例如,这里是entertemps方法的头。请注意,当参数声明为数组类型时,不需要数组的大小,但空方括号为: 全文共7179字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[2844]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。