JAVA语言程序设计-数组.ppt_第1页
JAVA语言程序设计-数组.ppt_第2页
JAVA语言程序设计-数组.ppt_第3页
JAVA语言程序设计-数组.ppt_第4页
JAVA语言程序设计-数组.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章数组,5.1一维数组5.2多维数组5.3数组的基本操作5.4数组应用举例5.5数组参数5.6字符串,Introduction,数组,Array(阵列)变量:存储单个数据数组:存储多个数据具有相同性质的一批数据Java数组:用一个变量表示一组相同类型的数据,ForExample,一组n个学生的成绩数据处理输入输出排序求最大求平均值判断不及格统计分数段给每一个学生的成绩数据设定一个变量?NO!,5.1一维数组,数组一个变量名表示一组数据,每个数据称为数组元素每个元素通过下标来区分一维数组以一个下标确定数组中的不同元素多维数组多个下标表示一个数组元素数组必须先经过申明和初始化后才能使用数组申明:确定数组名、数组的维数和数组元素的数据类型,一维数组的声明,一维数组声明的格式类型标识符数组名或类型标识符数组名例:表示学生的成绩(整数),可以声明数组score:intscore;表示体重的数组类型为float的weight,声明:floatweight;Note:方括号可以在变量名的后面,也可以在类型名后面,一维数组的初始化,数组初始化系统为数组分配存储空间,确定数组元素的个数用new初始化数组数组名=new类型标识符元素个数先声明数组再初始化intsc;sc=newint10;floatweight;weight=newfloat50,数组元素通过下标来区分下标最小值为0下标最大值为元素个数减1各元素的存储空间是连续的,一维数组初始化,在声明的同时进行初始化即将前述的声明语句、new语句合并为一条语句:类型标识符数组名=new类型标识符元素个数或类型标识符数组名=new类型标识符元素个数例如:intsc=newint10;floatweight=newfloat50初始化数组后,通过数组的length获取元素个数数组.length例如:n=sc.length;/n=10m=weight.length;/m=50,赋初值初始化数组,可以在声明数组的同时,给数组元素赋初值所赋初值的个数决定数组元素的数目其格式如下:类型标识符数组名=初值表初值表是用逗号隔开的初始值,例如:intscore=65,34,78,81,56,92,56,87,90,77;,score0,score9,使用数组的好处,减少程序中的变量数量统一的数组名,易于理解对数据元素的操作可以使用循环语句一维数组元素的赋值和输出都可以通过单重循环语句完成【例补5-10】输入10个学生的成绩,统计最高分,平均分、不及格人数及高于平均分的人数,定义数组sc10用于存放10个学生成绩利用循环语句输入成绩并统计,5.2多维数组,二维数组的声明二维数组经常表示一个矩阵二维数组的声明方式与一维数组类似,只是要给出两对方括号。二维数组声明形式如下:类型标识符数组名或类型标识符数组名例如:inta;/第一个叫做行,第二个叫做列,二维数组的初始化,先声明数组再初始化用new初始化二维数组数组名=new类型标识符行数列数例如:inta;a=newint34;声明同时初始化类型标识符数组名=new类型标识符行数列数或类型标识符数组名=new类型标识符行数列数例如:inta=newint34;,inta=newint34;数组中各元素通过两个下标来区分每个下标的最小值为0,最大值分别比行数或列数少1。系统为该数组a的12个元素分配存储空间,形式如表所示:,行,列,二维数组的初始化,初始化后,通过属性length获取行数和列数获取数组行数:数组名.length例:a.length/值为3获取数组列数:数组名行标.length例:a0.length/值为3,inta=newint34;Java中,二维数组作为一维数组来处理A可看作一维数组,有3个元素a0、a1、a2每个元素本身是一维数组,例:,二维数组的初始化,在初始化时,可以各行单独进行,允许各行元素不同、intc=newint3;/c为3行二维数组c0=newint1;/c0具有1个元素c1=newint3;/c1具有3个元素c2=newint5;/c2具有5个元素,a00、a01、a02、a03,赋初值初始化二维数组,类型标识符数组名=初值表0,初值表1,初值表n;例:intgd=65,34,78,81,56,92,56,87,90,92,69,75;,/gd共有12个元素,元素gd00,gd01,gd02,gd10,gd32的初始值分别为65,34,78,75,如表所示,注意:二维数组元素的赋值和输出可以通过双重循环语句完成,5.3数组的基本操作,数组的引用对数组的应用通常是对其元素的引用数组元素可以被赋值、被输出或参加表达式运算intage=newint3;age0=25;age2=2+age0;数组的复制可以通过循环语句也可以直接将一个数组赋值给另一数组inta=newint6;/将b数组的各元素值赋值a数组的相应元素intb=1,2,3,4,5,6;for(inti=0;i6;i+)ai=bi;或a=b;,Demo1,intc,d,e,i,j;c=newint33;d=newint33;e=newint33;for(i=0;i3;i+)for(j=0;j3;j+)dij=i+j;cij=dij;e=d;,c、d、e数组各元素012123234,数组的基本操作,数组的输出数组输出通常是逐个元素结合循环语句实现inta=newint6;for(inti=0;i6;i+)ai=i;System.out.print(ai+”);,输出:012345,例【5-2】一维数组的复制,classArrayCpublicstaticvoidmain(Stringargs)inta,b,i,j;a=newint3;b=newint5;System.out.println(a.length=+a.length);for(i=0;ia.length;i+)ai=i;System.out.print(ai+);System.out.println();/作用?(接下页),System.out.println(Beforearrayassignment);System.out.println(b.length=+b.length);for(j=0;jb.length;j+)bj=j*10;System.out.print(bj+);System.out.println();b=a;/注意,数组a、b长度不一样System.out.println(Afterarrayassignment);System.out.println(b.length=+b.length);for(j=0;jb.length;j+)System.out.print(bj+);System.out.println();,a.length=3012Beforearrayassignmentb.length=5010203040Afterarrayassignmentb.length=3012,intc,d,i,j;c=newint22;d=newint33;System.out.println(Arrayd:);for(i=0;id.length;i+)for(j=0;jdi.length;j+)dij=i+j;System.out.print(dij+“);System.out.println();c=d;System.out.println(Arrayc:);for(i=0;ic.length;i+)for(j=0;jaj,position=j故第i轮的选择和交换过程中,要进行n-i次的比较,for(i=1;iaj)p=j;temp=ai;ai=ap;ap=temp;,5.4数组应用举例-排序,另一种排序法-冒泡法,基本思想:从数组元素a(0)到a(n-1),将相邻的两个数两两进行比较(共比较n-1次),若前一个数大于后一个数,则进行对调。一趟操作后,a(n-1)已为最大数。再从数组元素a(0)到a(n-2)作同样操作后,结果是a(n-2)成为次大数。重复以上步骤,直至只剩a(0)和a(1)作比较,大的数放在a(1),剩下的a(0)自然是最小数了.。,数组应用举例-一维数组,【例补5-1】产生10个2位正整数,按从小到大排序,输入任一正整数,插入到原有数据序列中,保持从小到大次序不变,【例补5-2】任意输入n个整数,再输入一个整数,查找该数在n个数中出现的位置和次数。,数组应用举例二维数组,【例补5-3】输出杨辉三角型(输出10行)11112113311464115101051161520156117213535217118285670562881193684126126843691【例补5-4】求一个个位整数构成的5行5列方阵对角线上元素之积,解题:定义一个10行10列的二维数组a1010ai0=1;aii=1aij=ai-1j-1+ai-1j,主对角线元素下标:行号和列号相等,即i=j副对角线元素下标:行号、列号之和等于4,即j=4-i,数组应用举例-矩阵运算,【例5-5】数学中的矩阵在Java中用二维数组实现,本例中要进行矩阵的加、乘运算。intc=1,2,3,4,5,6,7,8,9;intd=2,2,2,1,1,1,3,3,3;求c+d,c*d?矩阵乘法运算用数组c的第1行各个数与数组d的第1列各个数对应相乘后加起来,就是乘法结果中第1行第1列的数;用数组c的第1行各个数与数组d的第2列各个数对应相乘后加起来,就是乘法结果中第1行第2列的数;用数组c的第2行各个数与数组d的第1列各个数对应相乘后加起来,就是乘法结果中第2行第1列的数;,5.5数组参数,在java的过程中,允许参数是数组。在使用数组参数时:在形式参数表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数在实际参数表中,数组名后不需括号,classArrayC4/例【5-6】计算数组元素平均值publicstaticvoidmain(Stringargs)intc=1,2,3,4,5,6,7,8,9;intj;System.out.println(Arrayc);for(j=0;jc.length;j+)System.out.print(cj+);System.out.println();System.out.println(Arrayaverage);System.out.println(arrayAverage(c);/调用数组,5.5数组参数-DEMO,/通过“方法”计算数组元素的平均值,数组名作为形式参数staticfloatarrayAverage(intd)floataverage=0;for(inti=0;id.length;i+)average=average+di;average=average/d.length;returnaverage;,程序运行结果如下:Arrayc123456789Arrayaverage5.0,数组名做实际参数时,传递的是地址,而不是值即形式参数和实际参数具有相同的存储单元。形式参数值的改变将导致实际参数的值随之改变,5.5数组参数-DEMO,例【5-7】展示数组参数传递地址的特性classArrayC6publicstaticvoidmain(Stringargs)intc=1,2,3,4,5,6,7,8,9,10;inti,j;System.out.println(“调用arrayMultiply之前的数组);for(i=0;ic.length;i+)for(j=0;jci.length;j+)System.out.print(cij+);System.out.println();arrayMultiply(c);/调用数组,System.out.println(“调用arrayMultiply之后的数组);for(i=0;ic.length;i+)/WhatDo?for(j=0;jci.length;j+)System.out.print(cij+);System.out.println();staticvoidarrayMultiply(intd)intk,l;for(k=0;kd.length;k+)for(l=0;ldk.length;l+)dkl=2*dkl;System.out.println(InarrayMultiply);for(k=0;kd.length;k+)for(l=0;ldk.length;l+)System.out.print(dkl+);System.out.println();/方法arrayMultiply结束/程序结束,调用arrayMultiply前的数组12345678910InarrayMultiply2468101214161820调用arrayMultiply后的数组2468101214161820,【例5-8】展示数组元素参数传递值的特性classArrayC7publicstaticvoidmain(Stringargs)intc=1,10,100,1000;intj;System.out.println(“数组在调用elementMultiply前);for(j=0;jc.length;j+)System.out.print(cj+);System.out.println();elementMultiply(c2);System.out.println(“数组在调用elementMultiply后);,5.5数组参数-DEMO,for(j=0;jc.length;j+)System.out.print(cj+);System.out.println();/main方法结束staticvoidelementMultiply(intd)d=2*d;System.out.println(d=+d);/elementMultiply方法结束/程序结束,该程序的运行结果如下:数组在调用elementMultiply前1101001000d=200/在elementMultiply中的输出数组在调用elementMultiply后1101001000,数组做方法的参数时传递的是地址,但数组元素做参数时传递的是值。,字符数组与字符串字符数组指数组的元素是字符类型的数据。要表“China”,可以使用如下的字符数组:charcountry=C,h,i,n,a;System.out.println(country);/输出”Chian”要表示长度为50的字符串,可以使用如下的字符数组:chartitle=newchar50;用字符数组表示字符串,使用不方便,Java提供String类,5.6字符串,字符串变量的声明和初始化:String变量名;/先申明再初始化变量名=newString();或/申明的同时初始化String字符串变量=newString();例如:Strings=newString();字符串赋值可以为字符串变量赋一个字符串常量,也可以将一个字符串变量或表达式的值赋给字符串变量。s1=Chinesepeople;s2=s1;/s2的值为“Chinesepeople”s3=alotof+s2;/s3的值为“alotofChinesepeople”运算符“+”的作用是将前后的两个字符串连接起来,字符串,最简单的创建字符串变量的方法Strings1=Chinesepeople;或:Strings1;s1=Chinesepeople;字符串的输出字符串可以通过println()或print()语句输出例如,以下语句序列为字符串变量s赋值并输出其值:Strings=Alltheworld;System.out.println(s);,字符串,publicclassStringUsepublicstaticvoidmain(Stringargs)Strings1,s2;s1=newString(Studentsshould);s2=newString();s2=studyhard.;System.out.print(s1);System.out.println(s2);s2=learnenglish,too;System.out.print(s1);System.out.println(s2);s2=s1+s2;System.out.println(s2);,【例5-9】字符串应用,该程序的运行结果如下:Studentsshouldstudyhard.Studentsshouldlearnenglish,tooStudentsshouldlearnenglish,too,字符串操作String类用很多成员方法来对字符串进行操作。例:s=“Iamastudent.”Intlength():返回字符串的长度。s.length()/返回值15charcharAt(intindex):返回字符串中第index个字符s.charAt(7)/返回值s,注意第1个字符序号0intindexOf(intch):返回字符串中字符ch第1次出现的位置。s.indexOf(a)或s.indexOf(97)/返回值2s.indexOf(A)/返回值-1,没有指定的字符ch返回值为-1,字符串操作,例:s=“Iamastudent.”indexOf(Stringstr,intindex):返回在该字符中,从第index个位置开始,子字符串str第1次出现的位置。s.indexOf(“stu”,0)/返回值是7s.indexOf(“stu”,9)/没有找到,返回值是-1substring(intindex1,intindex2):返回值是在该字符串中,从第index1个位置开始,到第index2-1个位置结束的子字符串。s.substring(7,13)/返回值是studens.substring(7)/返回值是student.若省略index2,从第index1个位置开始,到结束的子字符串,字符串操作,例:s=student;booleanequals(Objectobj):将字符串与obj所表示的字符串进行比较,如果两者相等,返回值true,否则falses.equals(“Student”)/返回值falsebooleanequalsIgnoreCase(Stringstr):将字符串与str所表示的字符串进行比较,但忽略大小写,如果两者相等,返回值true,否则falses.equalsIgnoreCase(“Student”)/返回值true,字符串操作,字符串操作,注意:=也能进行字符串是否相等的比较,但=比较的是地址指针,而equals比较的是实际内容.Strings1=newString(Hello);Strings2=newString(Hello);System.out.println(s1=s2);/输出falseSystem.out.println(s1.equals(s2);/输出true当要比较2个字符串是否相等时,应用equals方法。,例:s=student;intcompareTo(Stringstr):将字符串与str所表示的字符串进行比较,如果该字符串比str表示的字符串大,返回正值若比str表示的字符串小,返回负值如果两者相等,返回0返回值等于两个字符串中第一对不相等字符的ASCII码的差值pareTo(“stuate”)/返回值pareTo(swap)/返回值-pareTo(student)/返回值0,字符串操作,将int,long,float,double,boolean等基本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论