练习 1.5:数组

数组是同一类型变量的有序列表组成的一个变量。数组包含的变量称为元素。可以根据任何数据部件创建具有元素的数组,但数组中的每个元素都必须是从同一个数据部件创建的。只要不超过编程语言和系统资源的限制,数组可以包含任意数目的元素。此练习向您介绍 EGL 中的数组并显示如何创建处理数组的 Web 页面。有关 EGL 中的数组的更多信息,请参阅帮助中的数组

固定数组和动态数组

固定数组动态数组是作为单独的变量而不是记录部件的一部分创建的数组。(在记录部件中创建的数组称为结构字段数组,将在此练习的后面讨论。)固定数组也称为静态数组,虽然在运行时可以添加或除去元素,但在创建时指定了元素的个数。动态数组在创建不指定元素个数。

要创建固定数组或动态数组,首先指定它的名称和它的元素所属于的数据部件。然后,添加一对方括号,方括号的作用是将变量定义为数组。对于固定数组,方括号包含数组中元素的个数;对于动态数组,方括号是空的。对于任一类型的数组,可以选择设置 maxSize 属性以设置数组可包含的最多元素个数。

例如,以下代码创建了 int 元素的固定数组。此数组在创建时有 5 个元素,但由于它没有指定的最大大小,所以可以对它添加或除去元素。

myArray1 int[5];

以下代码创建 int 变量的动态数组:

myArray2 int[];

maxSize 属性设置数组可以包含的最多元素个数。以下代码创建在创建时具有 3 个元素但最大大小为 10 个元素的数组。

myArray3 int[3] {maxSize = 10};

结构字段数组

结构字段数组是作为记录部件中的字段的数组。以下代码定义包含人员名字以及存放该人员名字的三个地址的数组的记录部件:

record myPerson3Address type basicRecord
  10 name;
    20 firstName      char(20);
    20 lastName       char(20);
  10 address[3];
    20 street         char(30);
    20 city           char(20);
    20 state          char(20);
    20 postalCode     char(20);
end

多维数组

多维数组是一组数组。EGL 支持最多 7 维的数组。例如,以下代码创建了包含 5 个数组、每个数组有 3 个元素的数组:

myArray4 int[5][3];

使用数组

要使用数组中的数据,必须指定要使用数组中的哪个元素。例如,以下代码创建了一个数组并给它的元素赋值,一次给一个元素赋值:

myArray5 int[3];

myArray5[1] = 6;
myArray5[2] = 7;
myArray5[3] = 7;

还可以同时给数组中的每个元素赋值:

myArray6 int[3];

myArray6 = [6,7,8];

使用记录中的结构化字段的方式与使用普通的记录相似:

myPerson myPerson3Address

myPerson.name.firstName    = "Steve";
myPerson.name.lastName     = "Smith":
myPerson.address[1].city   = "New York";
myPerson.address[2].city   = "Los Angeles";
myPerson.address[3].city   = "Atlanta";

在 Web 页面上使用数组

在此练习中,将创建一个页面,它计算包含数字的数组中元素的最小值、最大值和平均值。此页面的 PageHandler 使用 for 循环来按顺序访问数组中的每个元素。循环在此教程的后面部分讨论。

  1. 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
  2. 从菜单栏中,单击文件 > 新建 > Faces JSP 文件。将打开“新建 Faces JSP 文件”向导。
  3. 名称字段中,输入以下名称作为文件名:

    ArrayTest

  4. 选择从页面模板创建复选框。
  5. 单击下一步
  6. 页面模板类型下面,单击用户定义的页面模板
  7. 缩略图下面,单击 A_gray.htpl 模板。
  8. 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
  9. 在新文件中,删除文本 Place your page content here
  10. 在删除文本的位置,输入 Arrays,然后按 Enter 键。
  11. 右键单击页面,然后单击编辑页代码。将打开页代码文件。
  12. 删除页代码文件中的所有代码并用以下代码替换它:
  13. package pagehandlers;
    
    PageHandler ArrayTest 
      {view="ArrayTest.jsp", onPageLoadFunction=onPageLoad}
    
    //Variables
    
    myNumbers   decimal(7,2)[8];
    maximum     decimal(7,2) {value=0};
    minimum     decimal(7,2) {value=0};
    average     decimal(7,2) {value=0};
    
    //Function definitions
    
      Function onPageLoad()
        //Assign values to the array
        myNumbers[1] = 25.68;
        myNumbers[2] = 50.82;
        myNumbers[3] = 62.35;
        myNumbers[4] = 19.32;
        myNumbers[5] = 12.46;
        myNumbers[6] = 33.65;
        myNumbers[7] = 41.35;
        myNumbers[8] = 22.13;
      End
    
      Function calculateStatistics()
    
        //set the minimum and maximum values to the starting values
        minimum = myNumbers[1];
        maximum = myNumbers[1];
    
        //create a temporary variable to hold the sum of the numbers
        sum decimal(7,2);
        sum = 0;
    
        //create a counter variable to track 
        //which element of the array is being used
        counter int = 1;
    
        //loop for each element in the myNumbers array
        for (counter from 1 to size(myNumbers) by 1)
    
          //check if the current number 
          //is larger than the previous maximum
          if (maximum < myNumbers[counter])
            maximum = myNumbers[counter];
          end
    
          //check if the current number 
          //is larger than the previous minimum
          if (minimum > myNumbers[counter])
            minimum = myNumbers[counter];
          end
    
          //add the current number to the running total
          sum = sum + myNumbers[counter];
    
          //move to the next element in the array
          end
    
        //calculate the average of the numbers
        average = sum / size(myNumbers);
    
      end
    
    end

    以下是一些有关刚才插入的代码的技术说明:

  14. 保存并关闭该文件。

将数据添加至页面

  1. 返回到 ArrayTest.jsp 页面。
  2. 在“页数据”视图中,展开 ArrayTest
  3. 从“页数据”视图中,将 myNumbers 拖到页面上。将打开“插入列表控件”窗口。
  4. 单击显示现有记录(只读)
  5. 单击完成
  6. 由于这一部分数据是数组,所以在页面上用数据表来表示它。与一般的 HTML 表不同,数据表在运行时调整大小以容纳下可变长度的内容,使得它们适用于数组。

  7. 单击新数据表的下方然后按 Enter 键以添加空白行。
  8. 从“选用板”视图的 Faces 组件抽屉中,将命令 - 按钮拖到新的空白行上。
  9. 在“页数据”视图中,展开 Actions
  10. calculateStatistics() 函数从“页数据”视图拖到该页面上的新按钮上。
  11. 在“属性”视图的显示选项选项卡上,将按钮的标签更改为计算统计信息
  12. 单击新按钮的下方然后按 Enter 键以添加另一个空白行。
  13. 在“页数据”视图中,通过按住 Ctrl 键来单击以下三个变量来选择它们:averagemaximumminimum
  14. 将这三个变量拖到页面上“计算统计信息”下方。“插入控件”窗口将打开。
  15. 单击显示现有记录(只读)
  16. 单击完成。这就将这些字段添加至页面了。

    该页面看起来应如下所示:

    ArrayTest.jsp 页面的外观

  17. 保存该页面。
  18. 在服务器上测试该页面。当单击计算统计信息按钮时,页面就会更新最小值、量大值和平均值字段。

现在,您可以开始进行练习 1.6:条件语句了。

反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.