JAVA语言程序设计数组ppt课件.ppt
《JAVA语言程序设计数组ppt课件.ppt》由会员分享,可在线阅读,更多相关《JAVA语言程序设计数组ppt课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章 数组v5.1 5.1 一维数组一维数组v5.2 5.2 多维数组多维数组v5.3 5.3 数组的基本操作数组的基本操作v5.4 5.4 数组应用举例数组应用举例v5.5 5.5 数组参数数组参数v5.6 5.6 字符串字符串Introductionv 数组,数组,Array(Array(阵列阵列) ) v 变量:存储单个数据变量:存储单个数据v 数组:存储多个数据数组:存储多个数据具有相同性质的一批数据具有相同性质的一批数据Java Java 数组:用一个变量表示一组相同类型的数据数组:用一个变量表示一组相同类型的数据For Examplev一组一组n个学生的成绩数据处理个学生的成绩数
2、据处理输入输入输出输出排序排序求最大求最大求平均值求平均值判断不及格判断不及格统计分数段统计分数段v给每一个学生的成绩数据设定一个变量?给每一个学生的成绩数据设定一个变量?NO!5.1 一维数组v数组数组一个变量名表示一组数据,每个数据称为数组元素一个变量名表示一组数据,每个数据称为数组元素每个元素通过下标来区分每个元素通过下标来区分v一维数组一维数组以一个下标确定数组中的不同元素以一个下标确定数组中的不同元素v多维数组多维数组多个下标表示一个数组元素多个下标表示一个数组元素v数组必须先经过申明和初始化后才能使用数组必须先经过申明和初始化后才能使用数组申明:确定数组名、数组的维数和数组元素的数
3、据类型数组申明:确定数组名、数组的维数和数组元素的数据类型一维数组的声明v 一维数组声明的格式一维数组声明的格式类型标识符类型标识符 数组名数组名 或或类型标识符类型标识符 数组名数组名 例:表示学生的成绩例:表示学生的成绩( (整数整数) ),可以声明数组,可以声明数组score: int score ; 表示体重的数组类型为表示体重的数组类型为float的的weight,声明:,声明: float weight; Note:方括号可以在变量名的后面,也可以在类型名:方括号可以在变量名的后面,也可以在类型名后面后面一维数组的初始化v数组初始化数组初始化系统为数组分配存储空间,确定数组元素的个
4、数系统为数组分配存储空间,确定数组元素的个数用用 new new 初始化数组初始化数组 数组名数组名= new = new 类型标识符类型标识符 元素个数元素个数 v先声明数组再初始化先声明数组再初始化 int sc ; sc=new int10; float weight; weight=new float50l 数组元素通过下标来区分数组元素通过下标来区分l 下标最小值为下标最小值为0 0l 下标最大值为下标最大值为元素个数减元素个数减1 1l 各元素的存储空间是连续的各元素的存储空间是连续的sc0sc1sc2sc3sc4sc5sc6sc7sc8sc9一维数组初始化v在声明的同时进行初始化
5、在声明的同时进行初始化即将前述的声明语句、即将前述的声明语句、newnew语句合并为一条语句:语句合并为一条语句:类型标识符类型标识符 数组名数组名=new 类型标识符类型标识符元素个数元素个数 或或类型标识符类型标识符 数组名数组名=new 类型标识符类型标识符元素个数元素个数例如:例如:int sc =new int10; float weight=new float50v初始化数组后,通过数组的初始化数组后,通过数组的lengthlength获取元素个数获取元素个数 数组数组.length.length例如:例如:n=sc.length; /n=10 m=weight.length; /
6、m=50赋初值初始化数组v可以在声明数组的同时,给数组元素赋初值可以在声明数组的同时,给数组元素赋初值v所赋初值的个数决定数组元素的数目所赋初值的个数决定数组元素的数目v其格式如下其格式如下: 类型标识符类型标识符 数组名数组名 = 初值表初值表 v初值表是用逗号隔开的初始值,例如:初值表是用逗号隔开的初始值,例如: int score=65,34,78,81,56,92,56,87,90,77;65347881569256879077score0score9使用数组的好处v减少程序中的变量数量减少程序中的变量数量v统一的数组名,易于理解统一的数组名,易于理解v对数据元素的操作可以使用循环语句
7、对数据元素的操作可以使用循环语句一维数组元素的赋值和输出都可以通过一维数组元素的赋值和输出都可以通过单重循环语句单重循环语句完成完成【例补【例补5-105-10】输入输入10个学生的成绩,统计最高分,平均分、个学生的成绩,统计最高分,平均分、不及格人数及高于平均分的人数不及格人数及高于平均分的人数1.1.定义数组定义数组sc10sc10用于存放用于存放1010个学生成绩个学生成绩2.2.利用循环语句输入成绩并统计利用循环语句输入成绩并统计5.2 多维数组v二维数组的声明二维数组的声明二维数组经常表示一个矩阵二维数组经常表示一个矩阵二维数组的声明方式与一维数组类似,只是要给出两对二维数组的声明方
8、式与一维数组类似,只是要给出两对方括号。二维数组声明形式如下:方括号。二维数组声明形式如下: 类型标识符类型标识符 数组名数组名或或 类型标识符类型标识符 数组名数组名例如:例如:intint a; a; / / 第一个第一个叫做行,第二个叫做行,第二个叫做列叫做列二维数组的初始化v先声明数组再初始化先声明数组再初始化用用newnew初始化二维数组初始化二维数组 数组名数组名= new = new 类型标识符类型标识符 行数行数列数列数 例如:例如:intint a; a; a=new int34; a=new int34;v声明同时初始化声明同时初始化 类型标识符类型标识符 数组名数组名=n
9、ew =new 类型标识符类型标识符 行数行数列数列数 或或 类型标识符类型标识符 数组名数组名=new =new 类型标识符类型标识符 行数行数列数列数 例如:例如:intint a=new int34; a=new int34;int a=new int34;v数组中各元素通过两个下标来区分数组中各元素通过两个下标来区分v每个下标的最小值为每个下标的最小值为0 0,最大值分别比行数或列数少,最大值分别比行数或列数少1 1。v系统为该数组系统为该数组a a的的1212个元素分配存储空间,形式如表所示:个元素分配存储空间,形式如表所示:a0 0a0 1a0 2a03a1 0a1 1a1 2a1
10、 3a2 0a2 1a2 2a2 3行行列列二维数组的初始化v初始化后,通过属性初始化后,通过属性lengthlength获取行数和列数获取行数和列数获取数组行数:获取数组行数:数组名数组名.length.length 例:例:a.lengtha.length /值为值为3 3获取数组列数:获取数组列数:数组名数组名 行标行标.length.length 例例:a0.lengtha0.length /值为值为3 3int a=new int34;vJavaJava中,二维数组作为一维数组来处理中,二维数组作为一维数组来处理A A可看作一维数组,有可看作一维数组,有3 3个元素个元素a0a0、a
11、1a1、a2a2每个每个元素本身是一维数组,例:元素本身是一维数组,例:二维数组的初始化v在初始化时,可以各行单独进行,允许各行元素不同、在初始化时,可以各行单独进行,允许各行元素不同、 intint c=new int3; c=new int3; /c/c为为3 3行二维数组行二维数组 c0=new int1;c0=new int1; /c0/c0具有具有1 1个元素个元素 c1=new int3;c1=new int3; /c1/c1具有具有3 3个元素个元素 c2=new int5;c2=new int5; /c2/c2具有具有5 5个元素个元素a00 、a01、a02、a03赋初值初始
12、化二维数组类型标识符类型标识符 数组名数组名=初值表初值表0,0,初值表初值表1,1,初值表初值表n;n;例:例:int gd=65,34,78,81,56,92,56,87,90, 92, 69, 75;/gd共有共有12个元素,元素个元素,元素gd00,gd01,gd02,gd10 , gd32的初始值分别为的初始值分别为65,34,78,75,如表所示,如表所示gd 00 65gd 01 34gd 02 78gd 10 81gd 11 56gd 12 92gd 20 56gd 21 87gd 22 90gd 30 92gd 31 69gd 32 75注意注意: :二维数组元素的赋值和输出
13、可以通过二维数组元素的赋值和输出可以通过双重循环语句双重循环语句完完成成5.3 数组的基本操作 v数组的引用数组的引用 对数组的应用通常是对其元素的引用对数组的应用通常是对其元素的引用数组元素可以被赋值、被输出或参加表达式运算数组元素可以被赋值、被输出或参加表达式运算 int age=new int3; age0=25; age2=2+age0 ;v数组的复制数组的复制可以通过循环语句可以通过循环语句也可以直接将一个数组赋值给另一数组也可以直接将一个数组赋值给另一数组 int a=new int6; /将将b数组的各元素值赋值数组的各元素值赋值a数组的相应元素数组的相应元素 int b=1,2
14、,3,4,5,6; for(int i=0;i6;i+) ai=bi; 或或 a=b;Demo1int c,d, e,i, j;c=new int33;d=new int33;e=new int33;for(i=0;i3; i+) for (j=0; j3; j+) dij=i+j; cij=dij; e=d;c c、d d、e e数组各元素数组各元素0 1 2 1 2 3 2 3 4 数组的基本操作v数组的输出数组的输出数组输出通常是逐个元素结合循环语句实现数组输出通常是逐个元素结合循环语句实现 int a=new int6; for(int i=0;i6;i+) ai=i; System.
15、out.print(ai+” ”); 输出输出: :0 1 2 3 4 50 1 2 3 4 5例【5-2】一维数组的复制class ArrayCclass ArrayC public static void main(String args public static void main(String args) ) int int a,b, i, j; a,b, i, j; a=new int3; a=new int3; b=new int5; b=new int5; System.out.println(a.length System.out.println(a.length=+a.le
16、ngth);=+a.length); for ( i=0; ia.length; i+) for ( i=0; ia.length; i+) ai=i; ai=i; System.out.print(ai System.out.print(ai+ );+ ); System.out.println System.out.println(); (); /作用?作用? (接下(接下页页) System.out.println(BeforeSystem.out.println(Before array assignment); array assignment); System.out.printl
17、n(b.lengthSystem.out.println(b.length=+b.length);=+b.length); for (j=0; jb.length for (j=0; jb.length; j+); j+) bjbj=j=j* *10;10; System.out.print(bj System.out.print(bj+ ); ); System.out.println System.out.println();(); b=a;b=a; / / 注意,数组注意,数组a a、b b长度不一样长度不一样 System.out.println(AfterSystem.out.pri
18、ntln(After array assignment); array assignment); System.out.println(b.length=+b.lengthSystem.out.println(b.length=+b.length); ); for (j=0; jb.length for (j=0; jb.length; j+); j+) System.out.print(bj System.out.print(bj+ ); System.out.println System.out.println();(); a.length=30 1 2 Before array assi
19、gnmentb.length=50 10 20 30 40 After array assignmentb.length=30 1 2 int c,d,iint c,d,i, j; , j; c=new int22; c=new int22; d=new int33; d=new int33; System. System.outout.println(Array.println(Array d:); d:); for(i=0;id.length for(i=0;id.length; i+) ; i+) for (j=0; jdi.length for (j=0; jdi.length; j+
20、) ; j+) dij=i+j dij=i+j; ; System. System.outout.print(dij.print(dij+“ ); +“ ); System. System.outout.println.println(); (); c=d; c=d; System. System.outout.println(Array.println(Array c:); c:); for(i=0;ic.length for(i=0;ic.length; i+); i+) for (j=0; jci.length for (j=0; jaj,positionapositionaj,posi
21、tion=j=jv故第故第i i轮的选择和交换过程中,要进行轮的选择和交换过程中,要进行n-in-i次的比较次的比较 for(i=1;in;ifor(i=1;in;i+)+) p=i; p=i; for(j=i+1;j=n;j for(j=i+1;jaj if (apaj) p=j;) p=j; temp=ai;ai=ap;ap temp=ai;ai=ap;ap=temp;=temp;5.4 数组应用举例-排序v另一种排序法另一种排序法- -冒泡法冒泡法, ,基本思想基本思想: :从数组元素从数组元素a(0)a(0)到到a(n-1)a(n-1),将相邻的两个数两两进行比,将相邻的两个数两两进行
22、比较(共比较较(共比较n-1n-1次),若前一个数大于后一个数,则进次),若前一个数大于后一个数,则进行对调。一趟操作后,行对调。一趟操作后,a(n-1)a(n-1)已为最大数。已为最大数。再从数组元素再从数组元素a(0)a(0)到到a(n-2)a(n-2)作同样操作后,结果是作同样操作后,结果是a(n-a(n-2)2)成为次大数。成为次大数。重复以上步骤,直至只剩重复以上步骤,直至只剩a(0)a(0)和和a(1)a(1)作比较作比较, ,大的数放大的数放在在a(1),a(1),剩下的剩下的a(0)a(0)自然是最小数了自然是最小数了. .。数组应用举例-一维数组【例补【例补5-15-1】产生
23、产生1010个个2 2位正整数,按从小到大排序,输入任位正整数,按从小到大排序,输入任一正整数,插入到原有数据序列中,保持从小到大次序不变一正整数,插入到原有数据序列中,保持从小到大次序不变【例补【例补5-25-2】任意输入任意输入n n个整数,再输入一个整数,查找该数个整数,再输入一个整数,查找该数在在n n个数中出现的位置和次数。个数中出现的位置和次数。数组应用举例二维数组【例补【例补5-35-3】输出杨辉三角型输出杨辉三角型( (输出输出1010行行) )1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21
24、 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1【例补【例补5-45-4】求一个个位整数构成的求一个个位整数构成的5 5行行5 5列方阵对角线上元素列方阵对角线上元素之积之积解题解题: :定义一个定义一个1010行行1010列的二维数组列的二维数组a1010ai0=1;aii=1ai0=1;aii=1aijaij=ai-1j-1+ai-1j=ai-1j-1+ai-1j主对角线元素下标主对角线元素下标: :行号和列号相等行号和列号相等, ,即即i=ji=j副对角线元素下标副对角线元素下标: :行号、列号之和等于行号、
25、列号之和等于4 4,即,即j=4-ij=4-i数组应用举例-矩阵运算【例【例5-55-5】数学中的矩阵在数学中的矩阵在JavaJava中用二维数组实现,本例中中用二维数组实现,本例中要进行矩阵的加、乘运算。要进行矩阵的加、乘运算。 intint c=1,2,3,4,5,6,7,8,9; c=1,2,3,4,5,6,7,8,9; int int d=2,2,2,1,1,1,3,3,3; d=2,2,2,1,1,1,3,3,3;求求c+dc+d,c c* *d d ? ? 矩阵乘法运算矩阵乘法运算用数组用数组c c的第的第1 1行各个数与数组行各个数与数组d d的第的第1 1列各个数对应相乘后加起
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言程序设计 数组 ppt 课件
限制150内