资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
JSP语法基础(二)语法基础(二)第四讲第四讲主讲人:孔德丽主讲人:孔德丽日期:学习目标学习目标学习并掌握学习并掌握JSP中数组、函数的定义和使用中数组、函数的定义和使用3.3【案例案例6】彩票组合彩票组合数组是具有相同数据结构的元素组成数组是具有相同数据结构的元素组成的有序数据的集合,一个数组中包含若干的有序数据的集合,一个数组中包含若干个相同类型的数据。组成数组的数据统称个相同类型的数据。组成数组的数据统称为数组元素,用一个统一的名称来标识这为数组元素,用一个统一的名称来标识这些元素,这个名称就是数组名。数组中,些元素,这个名称就是数组名。数组中,对数组元素的区分使用一个特定的序号对数组元素的区分使用一个特定的序号数组下标来实现,可以用数组下标来方数组下标来实现,可以用数组下标来方便地存取每一个数组元素。便地存取每一个数组元素。数组是一种复合类型的数据,它是由数组是一种复合类型的数据,它是由其他数据类型构造成而得到。与基本数据其他数据类型构造成而得到。与基本数据类型变量一样,数组变量也需要先定义、类型变量一样,数组变量也需要先定义、后使用。在定义数组变量时,系统会为数后使用。在定义数组变量时,系统会为数组在内存中分配一块连续的空间进行存储,组在内存中分配一块连续的空间进行存储,空间的大小由数组的类型和大小而定。空间的大小由数组的类型和大小而定。例如:定义一个包含例如:定义一个包含100个个int型元素型元素的数组,由于每个整型数据将占的数组,由于每个整型数据将占4个字节,个字节,因此系统会为该数组分配因此系统会为该数组分配4*100=400字节的字节的空间以供使用。空间以供使用。1数组的定义数组的定义在在JSP中,数组可以具有多个下标,中,数组可以具有多个下标,数组下标的个数称为数组的维数。只有一数组下标的个数称为数组的维数。只有一个下标的数组称为一维数组。个下标的数组称为一维数组。(1)一维数组)一维数组一维数组的定义格式有两种,如下一维数组的定义格式有两种,如下所示:所示:类型类型数组名数组名=new类型类型常量常量;类型类型数组名数组名=new类型类型常量常量;下面是有效的数组定义:下面是有效的数组定义:inta=newint10;charstr=newchar50;(2)二维数组)二维数组由两个下标来确定元素的数组称为二由两个下标来确定元素的数组称为二维数组,由三个以上下标来确定元素的数维数组,由三个以上下标来确定元素的数组称为多维数组。二维数组定义方式如下:组称为多维数组。二维数组定义方式如下:类型类型数组名数组名=new类型类型常量常量1常量常量2;图;图3-12二维数组的矩阵排列方二维数组的矩阵排列方式式从定义上看,二维数组相对于一维数组多从定义上看,二维数组相对于一维数组多了一个下标,即多了一维。二维数组可以了一个下标,即多了一维。二维数组可以看成一个矩阵,例如:看成一个矩阵,例如:inta=newint34;可以看作如图可以看作如图3-12所示的所示的3行行4列矩阵:列矩阵:图图图图3-123-12二维数组的矩阵排列方式二维数组的矩阵排列方式二维数组的矩阵排列方式二维数组的矩阵排列方式2数组的访问数组的访问对数组进行访问时,通常只能对数组对数组进行访问时,通常只能对数组的某一个元素进行单独的访问,而不能对的某一个元素进行单独的访问,而不能对整个数组的全部数据进行访问。一维数组整个数组的全部数据进行访问。一维数组元素的访问形式是通过数组下标来完成,元素的访问形式是通过数组下标来完成,这里的下标可以是一个整型常量,也可以这里的下标可以是一个整型常量,也可以是一已赋值的整型变量、整型值表达式或是一已赋值的整型变量、整型值表达式或整型符号常量。整型符号常量。例如:例如:inta=newint5;intn=3;a0=1;a1=2;a2=3;an=an-1+an-2;执行上述代码后,执行上述代码后,a3的值将为的值将为a2+a1=5。由于数组下标具有连续递增的特点,由于数组下标具有连续递增的特点,因此对数组的访问通常可用因此对数组的访问通常可用for循环来实现。循环来实现。例如:例如:inta=newint10;intk;for(k=0;k10;k+)ak=0;对二维数组的访问也和一维数组相似,对二维数组的访问也和一维数组相似,只能对单个元素逐一进行访问,而不能用只能对单个元素逐一进行访问,而不能用单行语句对整个数组全体成员一次性地进单行语句对整个数组全体成员一次性地进行访问。行访问。例如:例如:inta=newint34;intb=newint1010;inti,j;i=1;j=2;a10=1;/对单对单个元素的引用个元素的引用a01=2;aij+1=aij-1+aij;当需要对数组中的连续多个元素进行当需要对数组中的连续多个元素进行引用时,也可以用循环来完成,对于二维引用时,也可以用循环来完成,对于二维数组,可以用两重循环嵌套来完成。数组,可以用两重循环嵌套来完成。例如:例如:intb=newint1010;inti,j;for(i=0;i10;i+)/两重循两重循环实现对二维数组的引用环实现对二维数组的引用for(j=0;j10,j+)aij=0;3数组边界数组边界有一点需要特别注意,有一点需要特别注意,JSP本身不会本身不会对数组做边界检查,即不会检查下标值是对数组做边界检查,即不会检查下标值是否在规定的范围内,如果程序运行中下标否在规定的范围内,如果程序运行中下标值超出范围,将会产生异常,甚至会引起值超出范围,将会产生异常,甚至会引起整个系统的崩溃。因此,要求程序设计者整个系统的崩溃。因此,要求程序设计者在设计时对边界做必要的检查,以保证下在设计时对边界做必要的检查,以保证下标不会超出边界。标不会超出边界。inta=newint10;intk;for(k=0;k=10;k+)ak=0;3.3.2 函数函数1函数的定义与调用函数的定义与调用在使用一个函数前,先需要对其进行在使用一个函数前,先需要对其进行定义。函数定义通常由两部分组成:函数定义。函数定义通常由两部分组成:函数首部与函数体。在首部与函数体。在JSP中函数的定义必须放中函数的定义必须放在声明中,函数的一般定义方式如下:在声明中,函数的一般定义方式如下:注意注意函数定义不能嵌套,函数定义应函数定义不能嵌套,函数定义应该在所有函数之外。可以在调用该函数的该在所有函数之外。可以在调用该函数的位置之前,也可以在调用该函数的位置之位置之前,也可以在调用该函数的位置之后。后。2函数的递归调用函数的递归调用在函数调用中,有一种特殊的用法:在函数调用中,有一种特殊的用法:函数可以间接或直接地调用函数自身,这函数可以间接或直接地调用函数自身,这种调用称为函数的递归调用。种调用称为函数的递归调用。如果在函数的函数体内,又定义了语如果在函数的函数体内,又定义了语句来调用函数自身,这种调用称为直接递句来调用函数自身,这种调用称为直接递归调用;如果函数归调用;如果函数a()中有语句调用函数中有语句调用函数b(),而函数,而函数b()中又有语句调用了函数中又有语句调用了函数a(),这种调用称为函数的间接递归调用。,这种调用称为函数的间接递归调用。下面以计算代数式下面以计算代数式1+2+3+4+5为例,为例,来分析函数的递归调用的形成步骤。来分析函数的递归调用的形成步骤。(1 1)可以将)可以将1+2+3+4+51+2+3+4+5看看作是作是(1+2+3+4)+51+2+3+4)+5,在这里,需要处理的对象只,在这里,需要处理的对象只有两个:有两个:(1+2+3+4)(1+2+3+4)和和5 5,问题变得简单了。,问题变得简单了。(2 2)再将)再将1+2+3+4看作是看作是(1+2+3)+4。在这。在这里,需要处理的对象也只有两个:里,需要处理的对象也只有两个:(1+2+3)和和4。依此类推,将。依此类推,将1+2+3看作是看作是(1+2)+3,直到直到1+2。于是,嵌套可以看成是这样一个。于是,嵌套可以看成是这样一个由内至外的计算:由内至外的计算:(1+2)+3)+4)+5。(3 3)最后,当只有一个数)最后,当只有一个数1时返回,并在时返回,并在返回各层时依次进行计算返回各层时依次进行计算1+2=31+2=3、3+3=63+3=6、6+4=106+4=10、10+5=1510+5=15,从而使问题得到解决。,从而使问题得到解决。上面的算法可以用如下的公式来描述:上面的算法可以用如下的公式来描述:从前面的分析中可以看到,一个有意从前面的分析中可以看到,一个有意义的递归算法应该满足以下条件。义的递归算法应该满足以下条件。(1 1)可以将要解决的问题分解为一个新的)可以将要解决的问题分解为一个新的问题,而这个新问题是原问题的一个子问问题,而这个新问题是原问题的一个子问题,即新问题的解法仍与原问题相同,只题,即新问题的解法仍与原问题相同,只是原问题的处理对象有规律的变化。是原问题的处理对象有规律的变化。例如,上面的例如,上面的1+2+3+4+5即即f(5)看作是看作是f(51)+5,而,而f(4)又看作是又看作是f(41)+4,,f(1),这样,问题的对象由,这样,问题的对象由1+2+3+4+5转化转化为为1+2+3+4、1+2+3,1。(2 2)这种转化过程可以使问题得到解决。)这种转化过程可以使问题得到解决。(3 3)必须有一个确定的结束条件,在满足)必须有一个确定的结束条件,在满足条件时返回。条件时返回。例如,当上面的问题对象等于例如,当上面的问题对象等于1时就时就结束了递归,返回到上级调用,依次计算,结束了递归,返回到上级调用,依次计算,最终得到正确的运算结果。最终得到正确的运算结果。本讲小结本讲小结 本讲通过案例本讲通过案例6详细叙述了详细叙述了JSP中数组和中数组和函数的定义和使用函数的定义和使用本讲作业本讲作业1、通过浏览器完成矩阵的转置功能、通过浏览器完成矩阵的转置功能2、完成书后练习、完成书后练习4,5,6,7
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号